Определение

Процесс в Unix — это экземпляр запущенной программы.

Команды, запущенные в shell, являются процессами.

Например, команда, которая запускает три процесса:

cat /etc/passwd | head -n 10 | cut -d: -f1

Сам запущенный экземпляр shell также является процессом, как и любая другая программа, например, браузер или текстовый редактор.

Каждый процесс имеет свой уникальный идентификатор (PID, Process ID) и знает идентификатор процесса, который его запустил (PPID, Parent PID).

Атрибуты процесса

Текущая директория

Каждый процесс связан с определённой директорией — его текущей директорией (working directory). Все операции, для которых не указана конкретная директория, выполняются в текущей директории.

При запуске программы из shell, текущая директория наследуется от родительского процесса.

Команды для работы с текущей директорией:

pwd

выводит путь к текущей директории.

cd D

делает D текущей директорией.

PID и PPID

У процесса обязательно есть идентификатор — специальный уникальный номер — PID от Process ID, также процесс знает идентификатор родительского процесса, который его запустил: PPID от Parent Process ID

Получение справки о процессах

Для просмотра списка процессов можно использовать утилиту ps(1):

  • ps: показать список процессов, запущенных в данном терминале.
  • ps -e: показать полный список процессов.
  • ps -H: показать процессы в древовидном виде.
  • ps -u root: показать только процессы, запущенные пользователем root.

У ps есть множество полезных ключей, подробнее можно прочитать в ps(1).

Для просмотра статуса процессов в реальном времени рекомендуется использовать top(1) и htop.

Обмен данными с процессом

См. Способы коммуникации с процессом.