Изучаем процессы в linux. управление процессами

23.8 BSD Функции Ожидания Процесса

Библиотека GNU также обеспечивает эти средства для совместимости
с UNIX BSD. BSD использует тип данных union, чтобы представить
значения состояния, а не int. Два представления фактически
взаимозаменяемы; они описывают те же самые битовые шаблоны.
Библиотека GNU C определяет макрокоманды типа WEXITSTATUS так, чтобы
они работали на любом виде объекта, и функция wait определена,
чтобы принять любой тип указателя как аргумент status_ptr.

Эти функции объявлены в » sys/wait.h «.

Вместо того, чтобы обращаться к этим элементам непосредственно,
Вы должны использовать эквивалентные макрокоманды.

Если usage — не пустой символ, wait3 сохраняет тип использования
для дочернего процесса в *rusage (но только, если дочерний
завершился, а не остановился). См. Раздел 17.5 .

Если usage — не пустой символ, wait4 сохраняет тип использования
для дочернего процесса в *rusage (но только, если дочерний
завершился, а не остановился). См. Раздел 17.5 .

Получите динамическое представление с верхом

Вывод из представляет собой снимок экрана. Это не обновляет. Чтобы получить обновленный вид процессов, используйте команду . Он обеспечивает динамическое представление процессов, запущенных на вашем компьютере . Дисплей состоит из двух частей. В верхней части экрана расположена область панели инструментов, состоящая из строк текста, а в нижней части экрана — столбцы.

Начните с этой команды:

  верх 

Столбцы содержат информацию о процессах:

  • PID : идентификатор процесса
  • ПОЛЬЗОВАТЕЛЬ : имя владельца процесса
  • PR : приоритет процесса
  • Н.И . : Хорошая ценность процесса
  • VIRT : виртуальная память, используемая процессом
  • RES : резидентная память, используемая процессом
  • SHR : общая память, используемая процессом
  • S : Состояние процесса. Посмотрите список ниже значений, которые может принять это поле
  • % CPU : доля процессорного времени, использованного процессом с момента последнего обновления
  • % MEM : доля используемой физической памяти
  • TIME + : общее время процессора, используемое задачей в сотых долях секунды
  • КОМАНДА : имя команды или командной строки (имя и параметры командной строки) Если столбец команды не виден, нажмите клавишу «Стрелка вправо».

Статус процесса может быть одним из:

  • D : непрерывный сон
  • R : Бег
  • S : Спящая
  • T : Отслеживается (остановлено)
  • Z : зомби

Нажмите клавишу «Q», чтобы выйти .

СВЯЗАНО: 37 важных команд Linux, которые вы должны знать

PID

Каждый процесс имеет уникальный на данный момент времени идентификатор PID. Поменять PID процесса невозможно.

Значения PID 0 и 1 зарезервированы. Процесс с PID==0 не используется, PID==1 — принадлежит программе .

Максимальное значение PID в Linux равняется PID_MAX-1. Текущее значение PID_MAX можно посмотреть командой:

По умолчанию это 2^16 (32768) однако в 64-разрядных Linux его можно увеличить до 2^22 (4194304):

назначаются последовательно. При создании нового процесса вызовом ищется , больший по значению, чем тот, который был возвращён предыдущим вызовом . Если при поиске достигнуто значение , то поиск продолжается с PID=2. Такое поведение выбрано потому, что некоторые программы могут проверять завершение процесса по существованию его PID. В этой ситуации желательно, чтобы PID не использовался некоторое время после завершения процесса.

Удаление завершенного процесса из таблицы процессов

После завершения процесса его остается занят — это состояние процесса называется «зомби». Чтобы освободить родительский процесс должен дождаться завершения дочернего и очистить таблицу процессов. Это достигается вызовом:

Вызов эквивалентен

ждет завершения дочернего процесса и возвращает его . Код завершения и обстоятельства завершения заносятся в переменную status. Дополнительно, поведением можно управлять через параметр options.

  • pid < -1 — ожидание завершения дочернего процесса из группы с pgid==-pid
  • pid == -1 — ожидание завершения любого дочернего процесса
  • pid == 0 — ожидание завершения дочернего процесса из группы, pgid которой совпадает с pgid текущего процесса
  • pid > 0 — ожидание завершения любого дочернего процесса с указанным pid

Опция WNOHANG — означает неблокирующую проверку завершившихся дочерних процессов.

Статус завершения проверяется макросами:

высокоуровневый

  1. Обычно — пакеты программного обеспечения, которые реализуют промежуточный слой между системной платформой и приложением. Эти пакеты предназначены для переноса уже испытанных протоколов коммуникации приложения на более новую архитектуру. Примером можно привести: DIPC, MPI и др. (мне не знакомы, честно говоря)

Итак. Подведем маленький итог:

  • В Linux есть процессы,
  • каждый процесс может запускать подпроцессы (нити),
  • создание нового процесса создается клонированием исходного,
  • прородителем всех процессов в системе является процесс init, запускаемый ядром системы при загрузке.
  • процессы взаимодействуют между собой по средствам можпроцессного взаимодействия:
    • каналы
    • сигналы
    • сокеты
    • разделяемая память
  • каждый процесс обладает свойствами (читай: обладает следующим контекстом):
    • PID — идентификатор процесса
    • PPID — идентификатор процесса, породившего данный
    • UID и GID — идентификаторы прав процесса (соответствует UID и GID  пользователя, от которого запущен процесс)
    • приоритет процесса
    • состояние процесса (выполнение, сон и т.п.)
    • так же у процесса есть таблица открытых (используемых) файлов

Далее поговорим о том, как посмотреть состояние процессов в Linux и о том, как же ими управлять.

Состояния процесса в Linux

Когда процесс передает ядру запрос, который не может быть исполнен сразу же, то процесс «погружается в сон/ожидание» и «пробуждается», когда запрос может быть удовлетворен. В связи с этим, в зависимости от текущей ситуации, процесс, во время своего выполнения, может переходить из одного состояния в другое:

Рассмотрим основные состояния процесса:

   Выполнение — процесс либо запущен (текущий процесс в системе), либо готов к запуску (ожидает передачи на выполнение процессору).

   Ожидание — процесс ожидает наступления некоторого события (пользовательского ввода, сигнала от другого процесса и т.п.) или выделения системных ресурсов. Кроме того, ядро также различает два типа ожидающих процессов:

   прерываемые ожидающие процессы — могут быть прерваны сигналами;

   непрерываемые ожидающие процессы — процессы ожидают непосредственно на аппаратном уровне и не могут быть прерваны каким-либо событием/сигналом.

   Завершен — процесс был остановлен, как правило, путем получения сигнала штатного завершения работы exit().

   Зомби — иногда, когда родительский процесс убивается до завершения дочернего процесса, дочерние процессы становятся «осиротевшими», при этом в качестве нового родителя (с соответствующим изменением PPID) им назначается процесс init. Убитые процессы, но при этом все еще отображающиеся в таблице процессов, называются процессами зомби (они мертвы и не используются).

удаленный;

— удаленные вызовы процедур (Remote Procedure Calls — RPC)

RPC — разновидность технологий, которая позволяет компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно, реализация RPC технологии включает в себя два компонента: сетевой протокол (чаще TCP и UDP, реже HTTP) для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC).

— сокеты Unix

Сокеты UNIX бывают 2х типов: локальные и сетевые. При использовании локального сокета, ему присваивается UNIX-адрес и просто будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём простого чтения/записи из него. Сокеты представляют собой виртуальный объект, который существует, пока на него ссылается хотя бы один из процессов. При использовании сетевого сокета, создается абстрактный объект привязанный к слушающему порту операционной системы и сетевому интерфейсу,  ему присваивается INET-адрес, который имеет адрес интерфейса и слушающего порта.

Планировщик процессов

Задачей планировщика процессов процессов является извлечение процессов, готовых на выполнение, в соответствии с некоторыми правилами. Планировщик старается распределить процессорные ресурсы так, чтобы ни один из процессов не простаивал длительное время, и чтобы процессы, считающиеся приоритетными, получали процессорное время в первую очередь. В многопроцессорных системах желательно, чтобы в последовательных квантах времени процесс запускался на одном и том же процессоре, чтобы максимально использовать процессорный кэш. При этом сам планировщик должен выполнять выбор как можно быстрее.

Простейшая реализация очереди в виде FIFO очень быстра, но не поддерживает приоритеты и многопроцессорность. В Linux 2.6 воспользовались простотой FIFO, добавив к ней несколько усовершенствований:

  1. Было определено 140 приоритетов (100 реального времени + 40 назначаемых динамически), каждый из которых получил свою очередь FIFO. На запуск выбирается первый процесс в самой приоритетной очереди.
  2. В многопроцессорных системах для каждого ядра был сформирован свой набор из 140 очередей. Раз в 0,2 секунды просматриваются размеры очередей процессоров и, при необходимости балансировки, часть процессов переносится с загруженных ядер на менее загруженные
  3. Динамический приоритет назначается процессу в зависимости от отношении времени ожидания ресурсов к времени пребывания в состоянии выполнения. Чем дольше процесс ожидал ресурс, тем выше его приоритет. Таким образом, диалоговые задачи, которые 99% времени ожидают пользовательского ввода, всегда имеют наивысший приоритет.

Прикладной программист может дополнительно понизить приоритет процесса функцией (в Linux — интерфейс к вызову ). Большее значение означает меньший приоритет. В командной строке используется «запускалка» с таким же именем:

Список процессов

Вывести на экран список текущих процессов, запущенных пользователем, можно командой:

ps

Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:

ps aux

Мы увидим, примерно, следующее:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       661  0.0  0.0   4072     8 tty1     Ss+  Jul03   0:00 /sbin/mingetty
root       662  0.0  0.0   4072     8 tty2     Ss+  Jul03   0:00 /sbin/mingetty
root     16355  0.0  0.0 171636  3308 pts/0    S    15:46   0:00 sudo su
root     16366  0.0  0.0 140896  1556 pts/0    S    15:46   0:00 su
root     16368  0.0  0.0 108316  1944 pts/0    S    15:46   0:00 bash
root     18830  0.0  0.0 110244  1172 pts/0    R+   16:20   0:00 ps u

* где:

  • USER — учетная запись пользователя, от которой запущен процесс.
  • PID — идентификатор процесса.
  • %CPU — потребление процессорного времени в процентном эквиваленте.
  • %MEM — использование памяти в процентах.
  • VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
  • RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
  • TTY — терминал, из под которого был запущен процесс.
  • STAT — текущее состояние процесса. Могут принимать значения:

    1. R — выполнимый процесс;
    2. S — спящий;
    3. D — в состоянии подкачки на диске;
    4. T — остановлен;
    5. Z — зомби.
    6. W — не имеет резидентных страниц;
    7. < — высоко-приоритетный;
    8. N — низко-приоритетный;
    9. L — имеет страницы, заблокированные в памяти.
  • START — дата запуска процесса.
  • TIME — время запуска процесса.
  • COMMAND — команда, запустившая процесс.

Ключи

Ключ Описание
-A Все процессы.
-a Запущенные в текущем терминале, кроме главных системных.
-d Все, кроме главных системных процессов сеанса.
-e Все процессы.
f Показать дерево процессов с родителями.
T Все на конкретном терминале.
a Все, связанные с текущим терминалом и терминалами других пользователей.
r Список только работающих процессов.
x Отсоединённые от терминала.
u Показать пользователей, запустивших процесс.

локальный (привязаны к процессору и возможны только в пределах компьютера);

— каналы

  1. pipe (они же конвейеры, так же неименованные каналы), о них я много рассказывал в прошлом посте, примером можно привести: команда1 | команда2. По сути, pipe использует stdin, stdout и stderr.
  2. Именованные каналы (FIFO: First In First Out). Данный вид канала создаётся с помощью mknod или mkfifo, и два различных процесса могут обратиться к нему по имени. Пример работы с fifo:

в первом терминале (создаем именованный канал в виде файла pipe и из канала направляем данные с помощью конвейера в архиватор):

# mkfifo pipe
# ls -l
total 0
prw-r--r-- 1 root root 0 Nov  9 19:41 pipe
# gzip -9 -c < pipe > out

во втором терминале (отправляем в именованный канал данные):

# cat /path/to/file > pipe

в результате это приведет к сжатию передаваемых данных gzip-ом

— сигналы

сигнал — это асинхронное уведомление процесса о каком-либо событии. Когда сигнал послан процессу, операционная система прерывает выполнение процесса. Если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале. Если процесс не установил обработчик, то выполняется обработчик по умолчанию.
Все сигналы начинаются на «SIG…» и имеют числовые соответствия, определяемые в заголовочном файле signal.h. Числовые значения сигналов могут меняться от системы к системе, хотя основная их часть имеет в разных системах одни и те же значения. Утилита kill позволяет задавать сигнал как числом, так и символьным обозначением.
Сигналы можно послать следующими способами:

— разделяемая память

Разделяемую память применяют для того, чтобы увеличить скорость прохождения данных между процессами. В обычной ситуации обмен информацией между процессами проходит через ядро. Техника разделяемой памяти позволяет осуществить обмен информацией не через ядро, а используя некоторую часть виртуального адресного пространства, куда помещаются и откуда считываются данные.

После создания разделяемого сегмента памяти любой из пользовательских процессов может подсоединить его к своему собственному виртуальному пространству и работать с ним, как с обычным сегментом памяти.

— очереди сообщений

В общих чертах обмен сообщениями выглядит примерно так: один процесс помещает сообщение в очередь посредством неких системных вызовов, а любой другой процесс может прочитать его оттуда, при условии, что и процесс-источник сообщения и процесс-приемник сообщения используют один и тот же ключ для получения доступа к очереди.

Шаг 2 — Закрытие и расстановка приоритета процессов

В предыдущем шаге мы уже рассказывали о том, как можно закрыть процесс с помощью команды top. Этот же результат может быть достигнут при помощи команды kill. К примеру:

kill pid — впишите вместо PID идентификатор процесса, который вы хотите закрыть. Если процесс довольно упрямый и не хочет быть закрыт, вы можете использовать команду: kill -9 pid.

Еще одной командой для управления процессами является NICE. Обычно она используется для расстановки приоритетов для процессов, когда на вашей системе их запущено действительно много. В этом случае ваша система узнает какие из процессов являются важными и установит для них более высокий приоритет. Проще говоря, она помогает вам расставить приоритеты процессов от более важных к менее важным. Система будет запускать процесс, который имеет меньший приоритет только в том случае, если для этого имеется достаточно ресурсов ЦПУ. Этой команде можно задать значение от -20 до 19, чем меньше значение, тем выше приоритет процесса. Стандартный приоритет для всех приложений . Основным синтаксисом будет:

  • nice -n ‘значение’ process name — Пример: nice -n 10 name. Это начнет новый процесс с выбранным приоритетом (10).
  • Если вы хотите задать значение приоритета для уже запущенного приложения используйте: renice ‘значение’ -p ‘PID’ — Пример: renice ’10’ -p ‘54125’.

Как узнать pid процесса Linux

1. ps

Самый распространённый способ узнать PID Linux — использовать утилиту ps:

Кроме нужного нам процесса, утилита также выведет PID для grep, ведь процесс был запущен во время поиска. Чтобы его убрать, добавляем такой фильтр:

Например, узнаём PID всех процессов, имя которых содержит слово «Apache»:

2. pgrep

Если вам не нужно видеть подробную информацию о процессе, а достаточно только PID, то можно использовать утилиту pgrep:

По умолчанию утилита ищет по командной строке запуска процесса, если нужно искать только по имени процесса, то надо указать опцию -f:

3. pidof

Эта утилита ищет PID конкретного процесса по его имени. Никаких вхождений, имя процесса должно только совпадать с искомым:

С помощью опции -s можно попросить утилиту выводить только один PID:

4. pstree

Утилита pstree позволяет посмотреть список дочерних процессов для определённого процесса, также их pid-идентификаторы. Например, посмотрим дерево процессов Apache:

Ректальное администрирование: Основы для практикующих системных АДминистраторов

Одной из самых популярных и зарекомендовавших себя методологий системного администрирования является так называемое ректальное. Редкий случай сопровождения и обслуживания информационных систем, инфраструктуры организации обходится без его использования. Зачастую без знания данной методологии сисадминам даже бывает сложно найти работу в сфере ИТ, потому что работодатели, особенно всякие аутсорсинговые ИТ фирмы, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям: практикам ITIL, нормальным ITSM и прочей ерунде.

Команды для управления процессами

Команда ps

Предназначена для вывода информации о выполняемых процессах. Данная команда имеет много
параметров, о которых вы можете прочитать в руководстве (man ps). Здесь я опишу лишь наиболее
часто используемые мной:

Параметр Описание
-a отобразить все процессы, связанных с терминалом (отображаются процессы всех пользователей)
-e отобразить все процессы
-t список терминалов отобразить процессы, связанные с терминалами
-u идентификаторы пользователей отобразить процессы, связанные с данными идентификаторыми
-g идентификаторы групп отобразить процессы, связанные с данными идентификаторыми групп
-x отобразить все процессы, не связанные с терминалом

Например, после ввода команды ps -a вы увидите примерно следующее:

Для вывода информации о конкретном процессе мы можем воспользоваться командой:

В приведенном выше примере используется перенаправление ввода вывода между программами ps и grep, и как результат получаем информацию обо всех процессах содержащих в строке запуска «httpd».
Данную команду (ps -ax | grep httpd) я написал только лишь в демонстрационных целях — гораздо проще использовать параметр -С программы ps вместо перенаправления ввода вывода и параметр -e вместо -ax.

Программа top

Предназначена для вывода информации о процессах в реальном времени. Процессы сортируются по максимальному занимаемому процессорному времени, но вы можете изменить порядок сортировки (см. man top). Программа также сообщает о свободных системных ресурсах.

Просмотреть информацию об оперативной памяти вы можете с помощью команды free, а о дисковой — df. Информация о зарегистрированных в системе пользователей доступна по команде w.

Изменение приоритета процесса — команда nice

nice команда

Команда nice выполняет указанную команду с пониженным приоритетом, коэффициент понижения указывается в диапазоне 1..19 (по умолчанию он равен 10). Суперпользователь может повышать приоритет команды, для этого нужно указать отрицательный коэффициент, например —10. Если указать
коэффициент больше 19, то он будет рассматриваться как 19.

nohup — игнорирование сигналов прерывания

nohup команда

nohup выполняет запуск команды в режиме игнорирования сигналов. Не игнорируются только сигналы
SIGHUP и SIGQUIT.

kill — принудительное завершение процесса

kill PID

где PID — идентификатор процесса, который можно узнать с помощью команды ps.

Команды выполнения процессов в фоновом режиме — jobs, fg, bg

Команда jobs выводит список процессов, которые выполняются в фоновом режиме, fg — переводит
процесс в нормальные режим («на передний план» — foreground), а bg — в фоновый. Запустить программу в фоновом режиме можно с помощью конструкции &

Спонсоры:

Хостинг:

Maxim ChirkovДобавить, Поддержать, Вебмастеру

atop

atop — интерактивный полноэкранный монитор производительности. Является аналогом top, но в отличие от него выводит только новые изменения об активных системных процессах. Основным преимуществом утилиты atop является функция ведения логов.

Устанавливается командой:
для РЕД ОС версии 7.1 или 7.2:

$ sudo yum install atop

для РЕД ОС версии 7.3 и старше:

$ sudo dnf install atop

Для запуска утилиты необходимо в терминале выполнить команду:

$ atop

После запуска в терминале можно увидеть вывод, примерно следующего содержания:

Описание столбцов вывода atop:

PID — идентификатор процесса;RUID — реальный UID, под которым обрабатывается процесс;EUID — эффективный UID, под которым обрабатывается процесс (Обычно реальный и эффективный идентификаторы совпадают, т.е. процесс имеет в системе те же права, что и пользователь, запустивший его.);THR — общее количество потоков для процесса;SYSCPU — потребление CPU за последний интервал в режиме system. (обычно системные вызовы);USRCPU — потребление CPU за последний интервал в режиме user;VGROW — рост виртуальной памяти в течении последнего интервала;RGROW — резидентный(реальный, занятый процессом ОП) рост памяти в течении последнего интервала. Может быть отрицательным, если процесс выгружается из памяти в swap;RDDSK — показывает кол обращений к физическому диску для считывания с него данных(минуя кеш);
без установленного патча — количество данных считаные с диск(минуя кеш);WRDSK — показывает кол обращений к физическому диску для записи на него данных(минуя кеш);ST — статус процесса (N в первой позиции говорит, что процесс был запущен во время последнего интервала. Вторая позиция показывает закончился ли процесс за время последнего интервала: E — exit, S — прекращено, C — прекращено но остался core dump);EXC — код выхода процесса;S — состояние процесса. (S=sleep (ожидает событий) R=running (работает) Z=zombie (ожидает родительский процесс);CPUNR — идентифицирует CPU который обрабатывает процесс;CPU — процент занятости выбранного ресурса;CMD — имя процесса.

Далее приведено описание наиболее часто используемых интерактивных команд, которые вы можете выполнять во время работы программы:

m — отсортирует процессы по занятой памяти;d — отсортирует процессы по использованию диска;n — отсортирует процессы по использованию сети (доступно только с установленным патчем);v — покажет более подробную информацию о процессах (пользователя, дату и время начала процесса);u — отсортирует таблицу по пользователям. Использование shift+(d,m,n) выстроит текущий список по выше указанным параметрам;i — изменение времени проверки, по умолчанию 10 секунд;g — вернет все в дефолтный вывод;c — вывести полный путь запущенного процесса (столбец COMMAND).

Для посуточного ведения логов необходимо отредактировать конфиг atop

vi /etc/sysconfig/atop

Добавьте в конец файл следующие строки:

# Имя файла логов

OUTFILE="$LOGPATH/$CURDAY.log"

Общий вид конфига будет следующего содержания:

# sysconfig atop
#

# Current Day format
CURDAY=`date +%Y%m%d`
# Log files path
LOGPATH=/var/log/atop
# Binaries path
BINPATH=/usr/bin
# PID File
PIDFILE=/var/run/atop.pid
# interval (default 10 minutes)
INTERVAL=600
# Имя файла логов
OUTFILE="$LOGPATH/$CURDAY.log"

По умолчанию atop делает снимок раз в 10 минут, это значение регулируется параметром INTERVAL в конфиге /etc/sysconfig/atop, указывается в секундах, при необходимости поменяйте данный параметр.

После внесения изменений перезапустите atop:

sudo systemctl restart atop.service

Для просмотра дневного лога необходимо в терминале выполнить команду:

atop -r /var/log/atop/atop_20201009

где /var/log/atop/atop_20201009 путь до нужного лога.

Для навигации по времени в дневном логе используются клавиши:

t — перейти вперед по времени

Shift + t — перейти назад по времени

Для остановки сбора логов необходимо выполнить:

sudo systemctl stop atop.service

Что такое ID, и зачем его необходимо знать?

ID компьютера — это уникальный номер (адрес) сетевой платы компьютера или ноутбука. Его нужно знать для того, чтобы подключаться к интернет-сетям и ограничивать возможность постороннего внедрения в ваш компьютер. Другими словами, вы можете привязывать определенные программы конкретно к вашему ПК и не беспокоиться о сохранении конфиденциальности. Каждый адрес персональный и неповторимый.

ID-адрес необходим для:

  • активации ПК дистанционно или привязки какой-либо программы по лицензии;
  • блокировки удаленного компьютера;
  • выявления и исправления ошибок в удаленном доступе.

Теперь вы понимаете, что для продвинутого или начинающего пользователя знать параметры id просто необходимо.

Перенаправление ввода/вывода

Практически все операционные системы обладают механизмом перенаправления ввода/вывода.
Linux не является исключением из этого правила. Обычно программы вводят текстовые данные с
консоли (терминала) и выводят данные на консоль. При вводе под консолью подразумевается клавиатура, а при выводе — дисплей терминала. Клавиатура и дисплей — это, соответственно, стандартный ввод и вывод (stdin и stdout). Любой ввод/вывод можно интерпретировать как ввод из некоторого файла и вывод в файл. Работа с файлами производится через их дескрипторы. Для организации ввода/вывода в UNIX используются три файла: stdin (дескриптор 1), stdout (2) и stderr(3).

Символ > используется для перенаправления стандартного вывода в файл.
Пример:
$ cat > newfile.txt
Стандартный ввод команды cat будет перенаправлен в файл newfile.txt, который будет создан после выполнения этой команды. Если файл с этим именем уже существует, то он будет перезаписан. Нажатие Ctrl + D остановит перенаправление и прерывает выполнение команды cat.

Символ &lt используется для переназначения стандартного ввода команды. Например, при выполнении команды cat Символ >> используется для присоединения данных в конец файла (append) стандартного вывода команды. Например, в отличие от случая с символом >, выполнение команды cat >> newfile.txt не перезапишет файл в случае его существования, а добавит данные в его конец.

Символ | используется для перенаправления стандартного вывода одной программы на стандартный ввод другой. Напрмер, ps -ax | grep httpd.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector