Команда ps — основной инструмент, которым системный администратор пользуется для текущего контроля процессов. Версии этой команды различаются аргументами и выходным форматом, но, по сути, выдают одну и ту же информацию. В основном, различие в версиях — это следствие разных путей развития систем UNIX.
Получить список всех процессов, выполняющихся в системах Linux и AIX, можно с помощью команды ps aux. Ключ а используется для отображения всех процессов, х — для отображения процессов, отсоединенных от терминала, а ключ и обеспечивает фильтрование по имени или идентификатору пользователя, который запустил программу. Ниже показаны результаты работы команды ps aux в системе Red Hat (результат работы той же команды для системы AIX имеет небольшие отличия).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
:~:> ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19236 1492 ? Ss 13:11 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 13:11 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 13:11 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 13:11 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 13:11 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S 13:11 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S 13:11 0:00 [migration/1] root 8 0.0 0.0 0 0 ? S 13:11 0:00 [stopper/1] root 9 0.0 0.0 0 0 ? S 13:11 0:00 [ksoftirqd/1] root 10 0.0 0.0 0 0 ? S 13:11 0:00 [watchdog/1] root 11 0.0 0.0 0 0 ? S 13:11 0:00 [migration/2] root 12 0.0 0.0 0 0 ? S 13:11 0:00 [stopper/2] root 13 0.0 0.0 0 0 ? S 13:11 0:00 [ksoftirqd/2] root 14 0.0 0.0 0 0 ? S 13:11 0:00 [watchdog/2] root 15 0.0 0.0 0 0 ? S 13:11 0:00 [migration/3] root 16 0.0 0.0 0 0 ? S 13:11 0:00 [stopper/3] root 17 0.0 0.0 0 0 ? S 13:11 0:00 [ksoftirqd/3] root 18 0.0 0.0 0 0 ? S 13:11 0:00 [watchdog/3] root 19 0.0 0.0 0 0 ? S 13:11 0:00 [events/0] |
Команды, имена которых заключены в квадратные скобки, в действительности являются не командами, а потоками ядра, запланированными в качестве процессов
Еще один полезный набор аргументов команды ps для систем Linux и AIX — lax, предоставляющий дополнительную техническую информацию. Ключи a и x описаны выше (отображают все роцессы), а ключ l означает выбор “длинного” формата вывода данных. Команда ps lax выполняется быстрее, чем команда ps аuх, так как не со поставляет идентификаторы процессов с именами пользователей. Это может оказаться весьма важным фактором, если система уже перегружена каким-то процессом.
USER | Имя владельца процесса |
PID | Идентификатор процесса |
%CPU | Доля времени центрального процессора (в процентах), выделенная процессу |
%MEM | Часть реальной памяти (в процентах), используемая процессом |
VSZ | Виртуальный размер процесса |
RSS | Размер резидентного набора (количество страниц памяти) |
TTY | Идентификатор управляющего терминала |
STAT | Текущий статус процесса: R — выполняется D — ожидает записи на диск S — неактивен (< 20 с) T — приостановлен Z — зомби Дополнительные флаги: W — процесс выгружен на диск < — процесс имеет повышенный приоритет N — процесс имеет пониженный приоритет L — некоторые страницы блокированы в оперативной памяти s — процесс является лидером сеанса |
TIME | Количество времени центрального процессора, затраченное на выполнение процесса |
COMMAND | Имя и аргументы команды |
Ниже в сокращенном виде показаны результаты работы команды ps lax. Обратите внимание на дополнительные поля PPID (идентификатор родительского процесса), NI (фактор уступчивости) и CHAN (ресурс, которого ожидает процесс)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
:~:> ps lax F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 20 0 19236 1492 poll_s Ss ? 0:00 /sbin/init 1 0 2 1 20 0 0 0 kthrea S ? 0:00 [kthreadd] 1 0 3 2 -100 - 0 0 migrat S ? 0:00 [migration/0] 1 0 4 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/0] 1 0 5 2 -100 - 0 0 cpu_st S ? 0:00 [stopper/0] 5 0 6 2 -100 - 0 0 watchd S ? 0:00 [watchdog/0] 1 0 7 2 -100 - 0 0 migrat S ? 0:00 [migration/1] 1 0 8 2 -100 - 0 0 cpu_st S ? 0:00 [stopper/1] 1 0 9 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/1] 5 0 10 2 -100 - 0 0 watchd S ? 0:00 [watchdog/1] 1 0 11 2 -100 - 0 0 migrat S ? 0:00 [migration/2] 1 0 12 2 -100 - 0 0 cpu_st S ? 0:00 [stopper/2] 1 0 13 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/2] 5 0 14 2 -100 - 0 0 watchd S ? 0:00 [watchdog/2] 1 0 15 2 -100 - 0 0 migrat S ? 0:00 [migration/3] 1 0 16 2 -100 - 0 0 cpu_st S ? 0:00 [stopper/3] 1 0 17 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/3] 5 0 18 2 -100 - 0 0 watchd S ? 0:00 [watchdog/3] 1 0 19 2 20 0 0 0 worker S ? 0:00 [events/0] 1 0 20 2 20 0 0 0 worker S ? 0:00 [events/1] 1 0 21 2 20 0 0 0 worker S ? 0:00 [events/2] 1 0 22 2 20 0 0 0 worker S ? 0:01 [events/3] 1 0 23 2 20 0 0 0 worker S ? 0:00 [cgroup] 1 0 24 2 20 0 0 0 worker S ? 0:00 [khelper] 1 0 25 2 20 0 0 0 worker S ? 0:00 [netns] 1 0 26 2 20 0 0 0 async_ S ? 0:00 [async/mgr] 1 0 27 2 20 0 0 0 worker S ? 0:00 [pm] 1 0 28 2 20 0 0 0 bdi_sy S ? 0:00 [sync_supers] 1 0 29 2 20 0 0 0 bdi_fo S ? 0:00 [bdi-default] 1 0 30 2 20 0 0 0 worker S ? 0:00 [kintegrityd/0] 1 0 31 2 20 0 0 0 worker S ? 0:00 [kintegrityd/1] 1 0 32 2 20 0 0 0 worker S ? 0:00 [kintegrityd/2] 1 0 33 2 20 0 0 0 worker S ? 0:00 [kintegrityd/3] 1 0 34 2 20 0 0 0 worker S ? 0:00 [kblockd/0] 1 0 35 2 20 0 0 0 worker S ? 0:02 [kblockd/1] 1 0 36 2 20 0 0 0 worker S ? 0:00 [kblockd/2] |