Этот процесс представляет окно в системе X, выполняющее программу Emacs. Он был запущен оконным диспетчером в ответ на запрос нового окна. Командной оболочке был назначен новый псевдотерминал pts/0 для считывания и записи.
Это обозреватель системы помощи среды GNOME, запущенный оконным диспетчером.
По умолчанию программа
ps
выводит только процессы, поддерживающие подключение к терминалу, консоли, последовательной линии связи или псевдотерминалу. Другие процессы выполняются без взаимодействия с пользователем на терминале. Обычно это системные процессы, которые система Linux
применяет для управления совместно используемыми ресурсами. Команду
ps
можно применять для отображения всех таких процессов, использовав опцию
– е
и запросив "полную" информацию с помощью опции
– f
.
Примечание
Точная синтаксическая запись команды
ps
и формат вывода могут немного отличаться в разных системах. Версия GNU команды
ps
, применяемая в Linux, поддерживает опции, взятые из нескольких предшествующих реализаций
ps
, включая варианты из UNIX-систем BSD и AT&T, и добавляет множество своих опций. См. интерактивное справочное руководство для получения подробных сведений о доступных опциях и форматах вывода команды
ps
.
Системные процессы
Далее приведено несколько процессов, выполнявшихся в другой системе Linux. Вывод был сокращен для облегчения понимания. В следующих примерах вы увидите, как определить состояние или статус процесса. Вывод командой
ps
столбца
STAT
предоставляет коды текущего состояния процесса. Самые широко распространенные коды перечислены в табл. 11.1. Смысл некоторых из них станет понятен чуть позже в этой главе. Другие же не рассматриваются в данной книге и их можно спокойно игнорировать.
Таблица 11.1
Код STAT
Описание
S
Спящий. Обычно ждет появления события, такого как сигнал или активизация ввода
R
Выполняющийся. Строго говоря "работоспособный", т.е. в очереди на выполнение, либо выполняющийся, либо готовый к выполнению
D
Непрерывно спящий (ожидающий). Обычно ждущий завершения ввода или вывода
T
Остановленный. Обычно остановленный системой управления заданиями командной оболочки или находящийся под контролем отладчика
Z
Умерший или процесс-зомби
N
Задача с низким приоритетом, "nice"
W
Разбитый на страницы (не используется в Linux с ядром версии 2.6 и последующих версий)
S
Ведущий процесс сеанса
+
Процесс в группе фоновых процессов
l
Многопотоковый процесс
<
Задача с высоким приоритетом
$ ps ах
PID TTY STAT TIME COMMAND
1 ? Ss 0:03 init [5]
2 ? S 0:00 [migration/0]
3 ? SN 0:00 [ksoftirqd/0]
4 ? S< 0:05 [events/0]
5 ? S< 0:00 [khelper]
6 ? S< 0:00 [kthread]
840 ? S< 2:52 [kjournald]
888 ? S<s 0:03 /sbin/udevd --daemon
3069 ? Ss 0:00 /sbin/acpid
3098 ? Ss 0:11 /usr/sbin/hald --daemon=yes
3099 ? S 0:00 hald-runner
8357 ? Ss 0:03 /sbin/syslog-ng
8677 ? Ss 0:00 /opt/kde3/bin/kdm
9119 ? S 0:11 konsole [kdeinit]
9120 pts/2 Ss 0:00 /bin/bash
9151 ? Ss 0:00 /usr/sbin/cupsd
9457 ? Ss 0:00 /usr/sbin/cron
9479 ? Ss 0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
В основном каждый процесс запускается другим процессом, называемым родительским или порождающим процессом. Подобным образом запущенный процесс называют дочерним или порожденным. Когда стартует ОС Linux, она выполняет единственную программу, первого предка и процесс с номером 1,
init
. Это, если хотите, диспетчер процессов операционной системы и прародитель всех процессов. Другие системные процессы, с которыми вы вскоре встретитесь, запускаются процессом