Основы программирования в Linux
ПримечаниеТочная синтаксическая запись команды
и формат вывода могут немного отличаться в разных системах. Версия GNU командыps, применяемая в Linux, поддерживает опции, взятые из нескольких предшествующих реализацийps, включая варианты из UNIX-систем BSD и AT&T, и добавляет множество своих опций. См. интерактивное справочное руководство для получения подробных сведений о доступных опциях и форматах вывода командыps.psСистемные процессы
Далее приведено несколько процессов, выполнявшихся в другой системе Linux. Вывод был сокращен для облегчения понимания. В следующих примерах вы увидите, как определить состояние или статус процесса. Вывод командой
столбцаpsпредоставляет коды текущего состояния процесса. Самые широко распространенные коды перечислены в табл. 11.1. Смысл некоторых из них станет понятен чуть позже в этой главе. Другие же не рассматриваются в данной книге и их можно спокойно игнорировать.STATТаблица 11.1
Код STAT Описание SСпящий. Обычно ждет появления события, такого как сигнал или активизация ввода RВыполняющийся. Строго говоря "работоспособный", т.е. в очереди на выполнение, либо выполняющийся, либо готовый к выполнению DНепрерывно спящий (ожидающий). Обычно ждущий завершения ввода или вывода TОстановленный. Обычно остановленный системой управления заданиями командной оболочки или находящийся под контролем отладчика ZУмерший или процесс-зомби NЗадача с низким приоритетом, "nice" WРазбитый на страницы (не используется в Linux с ядром версии 2.6 и последующих версий) SВедущий процесс сеанса +Процесс в группе фоновых процессов lМногопотоковый процесс <Задача с высоким приоритетом $ <b>ps ах</b>PID TTY STAT TIME COMMAND1 ? 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 --daemon3069 ? Ss 0:00 /sbin/acpid3098 ? Ss 0:11 /usr/sbin/hald --daemon=yes3099 ? S 0:00 hald-runner8357 ? Ss 0:03 /sbin/syslog-ng8677 ? Ss 0:00 /opt/kde3/bin/kdm9119 ? S 0:11 konsole [kdeinit]9120 pts/2 Ss 0:00 /bin/bash9151 ? Ss 0:00 /usr/sbin/cupsd9457 ? Ss 0:00 /usr/sbin/cron9479 ? Ss 0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid9618 tty1 Ss+ 0:00 /sbin/mingetty --noclear tty19619 tty2 Ss+ 0:00 /sbin/mingetty tty29621 tty3 Ss+ 0:00 /sbin/mingetty tty39622 tty4 Ss+ 0:00 /sbin/mingetty tty49623 tty5 Ss+ 0:00 /sbin/mingetty tty59638 tty6 Ss+ 0:00 /sbin/mingetty tty610359 tty1 Ss+ 10:05 /usr/bin/Xorg -br -nolisten tcp :0 vt7 -auth10360 ? S 0:00 -:010381 ? Ss 0:00 /bin/sh /usr/bin/kde10438 ? Ss 0:00 /usr/bin/ssh-agent /bin/bash /etc/X11/xinit/xinitrc10478 ? S 0:00 start_kdeinit --new-startup +kcminit_startup10479 ? Ss 0:00 kdeinit Running...10500 ? S 0:53 kdesktop [kdeinit]10502 ? S 1:54 kicker [kdeinit]10524 ? Sl 0:47 beagled /usr/lib/beagle/BeagleDaemon.exe --bg10530 ? S 0:02 opensuseupdater10539 ? S 0:02 kpowersave [kdeinit]10541 ? S 0:03 klipper [kdeinit]10555 ? S 0:01 kio_uiserver [kdeinit]10688 ? S 0:53 konsole [kdeinit]10689 pts/1 Ss+ 0:07 /bin/bash10784 ? S 0:00 /opt/kde3/bin/kdesud11052 ? S 0:01 [pdflush]19996 ? SN1 0:20 beagled-helper /usr/lib/beagle/IndexHelper.exe20254 ? S 0:00 qmgr -1 -t fifo -u21192 ? Ss 0:00 /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -u ntp -i /v21198 ? S 0:00 pickup -1 -t fifo -u21475 pts/2 R+ 0:00 ps axЗдесь вы видите на самом деле очень важный процесс
1 ? Ss 0:03 init [5]В основном каждый процесс запускается другим процессом, называемым родительским или порождающим процессом. Подобным образом запущенный процесс называют дочерним или порожденным. Когда стартует ОС Linux, она выполняет единственную программу, первого предка и процесс с номером 1,
. Это, если хотите, диспетчер процессов операционной системы и прародитель всех процессов. Другие системные процессы, с которыми вы вскоре встретитесь, запускаются процессомinitили другим процессом, запущенным процессомinit.init