лекции, учебные пособия / материалы к собеседованию / ps
.docxps
[править]
Материал из Википедии — свободной энциклопедии
Текущая версия (не проверялась)
Перейти к: навигация, поиск
У этого термина существуют и другие значения, см. PS.
ps (от англ. process status) — программа в UNIX, Unix-подобных и других POSIX-совместимых операционных системах, выводящая отчёт о работающих процессах.
Содержание [убрать]
|
[править] Синтаксис
ps [опции]
-
Опции, отбирающие процессы для отчёта:
-
-A : все процессы;
-
-a : связанные с конкретным терминалом, кроме главных системных процессов сеанса, часто используемая опция;
-
-N : отрицание выбора;
-
-d : все процессы, кроме главных системных процессов сеанса;
-
-e : все процессы;
-
T : все процессы на конкретном терминале;
-
a : процессы, связанные с текущим терминалом, а так же процессы других пользователей;
-
r : информация только о работающих процессах;
-
x : процессы, отсоединённые от терминала.
-
[править] Выводимая информация
Столбцы:
-
UID : идентификатор пользователя;
-
PID : идентификатор процесса;
-
PPID : идентификатор родительского процесса;
-
C : приоритет процесса, используемый планировщиком задач;
-
STIME : время старта процесса;
-
TTY : терминал, с которым связан данный процесс;
-
TIME : общее время работы процесса;
-
CMD : команда, запустившая данный процесс «с некоторыми опциями выводит и каталог откуда процесс был запущен»;
-
STAT : состояние, в котором на данный момент находится процесс.
[править] Параметры STAT
-
R : процесс выполняется в данный момент
-
S : процесс ожидает выполнение (спит)
-
D : процесс в полной (непрерываемой) спячке, например, ожидает ввода/вывода
-
Z : zombie или defunct процесс, то есть процесс у которого нет родителя
-
T : процесс остановлен
-
W : процесс в свопе
-
< : процесс в приоритетном режиме.
-
N : процесс в режиме низкого приоритета
-
L : real-time процесс, имеются страницы, заблокированные в памяти.
[править] Примеры использования
# ps
PID TTY TIME CMD
2643 pts/0 00:00:00 su
2644 pts/0 00:00:00 bash
3092 pts/0 00:00:00 ps
# ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:01 init [3]
2 ? SN 0:00 [ksoftirqd/0]
3 ? S< 0:00 [events/0]
4 ? S< 0:00 [khelper]
5 ? S< 0:00 [kblockd/0]
29 ? S 0:00 [pdflush]
# ps af
PID TTY STAT TIME COMMAND
2617 pts/0 Ss 0:00 -bash
2643 pts/0 S 0:00 \_ su -
2644 pts/0 S 0:00 \_ -bash
3100 pts/0 R+ 0:00 \_ ps af
2176 tty6 Ss+ 0:00 /sbin/mingetty tty6
2175 tty5 Ss+ 0:00 /sbin/mingetty tty5
[править] Примечания
-
Альтернативой ps является команда top, удобно выводящая на экран постоянно обновляющуюся информацию, однако top ограничена размерами окна, поэтому всё, что не может поместиться на экран, просто игнорируется.
-
Для команды ps удобно пользоваться конвейером и утилитой less для пролистывания выводимой информации с помощью кнопок вверх и вниз, например ps ax | less
-
С помощью утилиты grep удобно искать и выводить только нужные процессы, например ps ax | grep smbd
-
В связи с возможностью написания модуля, подгружаемого к ядру, и возвращающего на запрос от ps модифицированный список процессов, администраторам не рекомендуется всецело полагаться на результаты ps и top при подозрениях на возможность несанкционированного вмешательства.
PS(1)
НАЗВАНИЕ ps - выдача информации о состоянии процессов
СИНТАКСИС
ps [-e] [-d] [-a] [-f] [-l] [-n файл_с_системой] [-t список_терминалов]
[-p список_идентификаторов_процессов]
[-u список_идентификаторов_пользователей]
[-g список_идентификаторов_лидеров_групп]
ОПИСАНИЕ Команда ps выдает информацию об активных процессах. По умолчанию информация дается только о процессах, ассоциированных с данным терминалом. Выводятся идентификатор процесса, идентификатор терминала, истраченное к данному моменту время ЦП и имя команды. Если нужна иная информация, следует пользоваться опциями.
Некоторые опции имеют один аргумент или список аргументов. Аргументы в списке могут быть либо отделены друг от друга запятыми, либо все вместе заключены в двойные кавычки и отделены пробелами или запятыми. Аргументы в списке_процессов и в списке_групп должны быть числами.
Командой ps обрабатываются следующие опции:
-e
Вывести информацию обо всех процессах.
-d
Вывести информацию обо всех процессах, кроме лидеров групп.
-a
Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.
-f
Генерировать полный листинг (см. ниже раз яснение смысла колонок).
-l
Генерировать листинг в длинном формате (см. ниже).
-n файл_с_системой
Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.
-t список_терминалов
Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал - это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.
-p список_идентификаторов_процессов
Выдавать информацию только об указанных процессах.
-u список_идентификаторов_пользователей
Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f - в символьном.
-g список_идентификаторов_лидеров_групп
Выводить информацию только о процессах, для которых указаны идентификаторы лидеров групп. Лидер группы - это процесс, номер которого идентичен его идентификатору группы. Shell, запускаемый при входе в систему, является стандартным примером лидера группы.
При указании опции -f ps пытается определить имя команды и аргументы, с которыми был создан процесс, исследуя пользовательский блок процесса. Если это не удается, имя процесса выводится так же, как и при отсутствии опции -f, только заключается в квадратные скобки.
Ниже приводятся заголовки колонок выдачи и об ясняется смысл их содержимого. Буквы l или f в скобках означают, что эта колонка появляется соответственно при длинном или полном формате выдачи; отсутствие букв означает, что данная колонка выводится всегда. Отметим, что опции -l и -f влияют только на формат выдачи, но не на список процессов, информация о которых будет предоставлена.
F (l) |
Флаги (шестнадцатеричные), логическая сумма которых дает следующие сведения о процессе: |
|
00 |
Процесс терминирован; элемент таблицы процессов свободен. |
|
01 |
Системный процесс: всегда в основной памяти. |
|
02 |
Процесс трассируется родительским процессом. |
|
04 |
Родительский трассировочный сигнал остановил процесс; родительский процесс ждет [см. ptrace(2)]. |
|
08 |
Процесс не может быть разбужен сигналом. |
|
10 |
Процесс в основной памяти. |
|
20 |
Процесс в основной памяти; блокирован до завершения события. |
|
40 |
Идет сигнал к удаленной системе. |
|
80 |
Процесс в очереди на ввод/вывод. |
|
S (l) |
Статус процесса: |
|
O |
Активный: обрабатывается процессором. |
|
S |
Спящий: ожидает завершения события. |
|
R |
Готов: стоит в очереди на выполнение. |
|
I |
Рождающийся: процесс создается. |
|
Z |
Состояние "зомби": процесс завершен, но родительский процесс не ждет этого. |
|
T |
Трассируемый: процесс остановлен сигналом, так как родительский процесс трассирует его. |
|
X |
Растущий: процесс ожидает получения большего об ема основной памяти. |
|
UID (f,l) |
Идентификатор владельца процесса; при указании опции -f выдается входное имя пользователя. |
|
PID |
Идентификатор процесса (необходим для терминирования процесса). |
|
PPID (f,l) |
Идентификатор родительского процесса. |
|
C (f,l) |
Доля выделенного планировщиком времени ЦП. |
|
STIME (f) |
Время запуска процесса (часы:минуты:секунды). Если процесс запущен более чем 24 часа назад, выдается месяц и день запуска. |
|
PRI (l) |
Приоритет процесса; большее число означает меньший приоритет. |
|
NI (l) |
Поправка к приоритету. |
|
ADDR (l) |
Адрес процесса в памяти. |
|
SZ (l) |
Размер (в блоках по 512 байт) образа процесса в памяти. |
|
WCHAN (l) |
Адрес события, которого ожидает процесс. У активного процесса эта колонка пуста. |
|
TTY |
Управляющий терминал (обычно - терминал, с которого был запущен процесс; см. ниже СЮРПРИЗЫ). Если такового нет, выдается символ ?. |
|
TIME |
Истраченное процессом время ЦП. |
|
COMMAND |
Имя программы; если указана опция -f, то выводится полное имя команды и ее аргументы. |
Процесс, закончивший выполнение своей программы, и имеющий родительский процесс, не дождавшийся еще завершения, в качестве имени программы получает .
ФАЙЛЫ
/dev
/dev/sxt/*
/dev/tty*
/dev/kmem Виртуальная память ядра.
/dev/mem Память.
/etc/passwd Файл паролей, из которого берется инфор-
мация об идентификаторах пользователей.
/etc/ps_data Внутренняя структура данных.
/unix Имя файла, откуда была загружена операци-
онная система.
СМ. ТАКЖЕ acctcom(1), kill(1), nice(1). getty(1M) в Справочнике администратора.
СЮРПРИЗЫ Во время выполнения команды ps положение вещей может измениться; таким образом, ps дает лишь хорошее приближение к действительности.
Некоторые сведения, относящиеся к процессам, отмеченным как , не соответствуют действительности.
Если не указана ни одна из опций -t, -p, -u, -g, команда ps проверяет стандартный ввод, стандартный вывод и стандартный протокол (в указанном порядке) для определения управляющего терминала и пытается вывести информацию о процессах, ассоциированных с этим терминалом. В ситуации, когда все три стандартных направления ввода/ вывода переназначены, ps не может найти и выдать имя управляющего терминала.
Команда ps -ef может не отметить начало входа в систему, а вывести сведения о последнем запуске getty(1M) для данной терминальной линии.
11.3. ps
Итак, теперь вы знаете как переключаться между несколькими процессами, запущенными из командной строки. А также вы знаете, что в системе постоянно выполняется много других процессов. Так каким же образом можно получить перечень всех этих программ? Для этого вам нужно воспользоваться командой ps(1). У этой команды есть много опций, поэтому мы рассмотрим только самые важные из них. Чтобы получить полный список опций, обратитесь к странице руководства ps. Использование страниц руководства подробно рассмотрено в Разд. 2.1.1.
Просто наберите ps, чтобы получить список программ, выполняемых в вашем терминале. В этот список входят процессы, работающие в приоритетном режиме (любой командный процессор, в котором вы работаете, и сама команда ps). Также перечисляются фоновые процессы, которые могут выполняться в данный момент. В большинстве случаев это будет очень короткий список:
Рисунок 11-1. Наиболее общий вывод команды ps
% ps PID TTY TIME CMD 7923 ttyp0 00:00:00 bash 8059 ttyp0 00:00:00 ps |
И хотя процессов здесь не так уж и много, это весьма типичная информация. Вы увидите те же самые колонки при использовании ps, независимо от того, сколько процессов выполняется в системе. Что же это тогда значит?
PID - это идентификатор процесса (process ID). Все работающие процессы имеют уникальные идентификаторы в диапазоне от 1 до 32767. Каждому новому процессу присваивается следующий свободный PID. Когда процесс завершает свою работу (или убивается, как вы увидите в следующем разделе), он освобождает свой PID. При достижении в системе максимального PID, следущим берётся первый свободный PID с наименьшим номером и так по кругу.
Колонка TTY обозначает терминал, в котором выполняется процесс. При простом вызове ps будет выведен список только тех программ, которые выполняются в текущем терминале. Поэтому все процессы будут иметь одну и ту же информацию в колонке TTY. Как видно в примере, оба процесса в списке выполняются в терминале ttyp0. Это означает, что они выполняются или удалённо, или в каком-нибудь X-терминале.
Колонка TIME содержит данные о времени, в течение которого процесс использует ресурсы центрального процессора. Однако это не то время, в течение которого выполняется процесс. Помните, что Linux является многозадачной операционной системой. В ней постоянно выполняется множество процессов и каждый из них получает небольшую порцию процессорного времени. Поэтому колонка TIME должна содержать для каждого процесса как можно меньшее значение времени по сравнению с тем временем, в течение которого выполняется этот процесс. Если вы видите в этой колонке значение более нескольких минут, это может означать, что что-то идёт не так.
И наконец в колонке CMD представлена сама программа. В ней отображается только имя программы, безо всяких опций командной строки или подобной информации. Для получения этой информации вам нужно использовать одну из множества опций команды ps. Мы вкратце рассмотрим их здесь.
Вы можете получить полный список процессов, выполняемых в вашей системе, используя правильный набор опций. Это скорее всего приведёт к тому, что вы получите большой список процессов (на моём ноутбуке на время написания этого предложения их было 55 (а на моём ПК - 110 :) - прим. переводчика), поэтому я несколько сокращу вывод:
% ps -ax PID TTY STAT TIME COMMAND 1 ? S 0:03 init [3] 2 ? SW 0:13 [kflushd] 3 ? SW 0:14 [kupdate] 4 ? SW 0:00 [kpiod] 5 ? SW 0:17 [kswapd] 11 ? S 0:00 /sbin/kerneld 30 ? SW 0:01 [cardmgr] 50 ? S 0:00 /sbin/rpc.portmap 54 ? S 0:00 /usr/sbin/syslogd 57 ? S 0:00 /usr/sbin/klogd -c 3 59 ? S 0:00 /usr/sbin/inetd 61 ? S 0:04 /usr/local/sbin/sshd 63 ? S 0:00 /usr/sbin/rpc.mountd 65 ? S 0:00 /usr/sbin/rpc.nfsd 67 ? S 0:00 /usr/sbin/crond -l10 69 ? S 0:00 /usr/sbin/atd -b 15 -l 1 77 ? S 0:00 /usr/sbin/apmd 79 ? S 0:01 gpm -m /dev/mouse -t ps2 94 ? S 0:00 /usr/sbin/automount /auto file /etc/auto.misc 106 tty1 S 0:08 -bash 108 tty3 SW 0:00 [agetty] 109 tty4 SW 0:00 [agetty] 110 tty5 SW 0:00 [agetty] 111 tty6 SW 0:00 [agetty] [вывод сокращён] |
Большинство этих процессов запускаются во время загрузки на большинстве систем. Я внёс некоторые изменения в свою систему, поэтому ваш список наверняка будет совершенно иным. Однако вы увидите большинство этих процессов и в своей системе. Как видите, эти опции позволили получить опции командной строки выполняемых процессов. Уязвимость в ядре в функции ptrace стала причиной исправления кода ядра, в результате которого для многих выполняемых процессов больше не показываются опции командной строки. В данном примере названия этих процессов заключены в квадратные скобки, например у процессов с PID'ами от 108 до 111. В этом листинге также появилось несколько новых колонок и некоторая другая интересная информация.
Во-первых, вы заметите, что большинство процессов в списке работают в tty“?”. Они не привязаны ни к одному из терминалов. Это является самым распространённым случаем для демонов, т.е. процессов, которые выполняются без привязки к какому-либо терминалу. Примеры демонов: sendmail, BIND, apache и NFS. Обычно они ожидают запросов от клиентов и возвращают информацию на полученные запросы.
Во-вторых, здесь появился новый столбец: STAT. В нём отображается состояние процесса. S означает, что процесс спит (sleeping), т.е. ожидает какого-либо события. Z означает процесс-зомби. Такой процесс появляется в том случае, когда умирает его родительский процесс, оставив после себя дочерний процесс. Это нехорошая ситуация. D означает процесс, который перешёл в “непробудный” сон. Часто такие процессы невозможно убить даже путём отправки им сигнала SIGKILL. Вы узнаете больше о SIGKILL в следующем разделе, посвящёном команде kill. W означает paging (страничную подкачку файлов). Мёртвые процессы обозначаются как X. Процессы, отмеченные как T, трассируются или остановлены. R означает, что процесс можно запустить.
Если вы хотите получить ещё более подробную информацию о выполняемых процессах, попробуйте выполнить следующую команду:
% ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 344 80 ? S Mar02 0:03 init [3] root 2 0.0 0.0 0 0 ? SW Mar02 0:13 [kflushd] root 3 0.0 0.0 0 0 ? SW Mar02 0:14 [kupdate] root 4 0.0 0.0 0 0 ? SW Mar02 0:00 [kpiod] root 5 0.0 0.0 0 0 ? SW Mar02 0:17 [kswapd] root 11 0.0 0.0 1044 44 ? S Mar02 0:00 /sbin/kerneld root 30 0.0 0.0 1160 0 ? SW Mar02 0:01 [cardmgr] bin 50 0.0 0.0 1076 120 ? S Mar02 0:00 /sbin/rpc.port root 54 0.0 0.1 1360 192 ? S Mar02 0:00 /usr/sbin/sysl root 57 0.0 0.1 1276 152 ? S Mar02 0:00 /usr/sbin/klog root 59 0.0 0.0 1332 60 ? S Mar02 0:00 /usr/sbin/inet root 61 0.0 0.2 1540 312 ? S Mar02 0:04 /usr/local/sbi root 63 0.0 0.0 1796 72 ? S Mar02 0:00 /usr/sbin/rpc. root 65 0.0 0.0 1812 68 ? S Mar02 0:00 /usr/sbin/rpc. root 67 0.0 0.2 1172 260 ? S Mar02 0:00 /usr/sbin/cron root 77 0.0 0.2 1048 316 ? S Mar02 0:00 /usr/sbin/apmd root 79 0.0 0.1 1100 152 ? S Mar02 0:01 gpm root 94 0.0 0.2 1396 280 ? S Mar02 0:00 /usr/sbin/auto chris 106 0.0 0.5 1820 680 tty1 S Mar02 0:08 -bash root 108 0.0 0.0 1048 0 tty3 SW Mar02 0:00 [agetty] root 109 0.0 0.0 1048 0 tty4 SW Mar02 0:00 [agetty] root 110 0.0 0.0 1048 0 tty5 SW Mar02 0:00 [agetty] root 111 0.0 0.0 1048 0 tty6 SW Mar02 0:00 [agetty] [вывод сокращён] |
Это практически вся информация о системе. В ней присутствует дополнительная информация о процессе: какой пользователь его запустил, сколько он использует системных ресурсов (колонки %CPU, %MEM, VSZ и RSS) и когда был запущен. Очевидно, что такая подробная информация может пригодиться системному администратору. Следует отметить ещё один момент: данные теперь вылезают за пределы экрана, и вы не можете увидеть их полностью. Опция -w заставит ps переносить длинные строки.
Это не слишком удобно, но это работает. Теперь в вашем распоряжении полный отчёт по всем процессам. Существует даже ещё более подробная информация, которую вы можете получить о процессе. Обратитесь к хорошей странице руководства по команде ps. Тем не менее представленные выше опции являются самыми популярными, и скорее всего именно их вы будете использовать наиболее часто.
-
Home
-
Карта сайта
-
О Sun Solaris
Начало формы
Конец формы
Команда ps
01.07.2008
Команду ps можно использовать для того, чтобы определить, какие процессы работают (или не работают), а также получить следующую более детальную информацию о каждом процессе:
-
PID (Process ID);
-
UID (UserlD);
-
приоритет;
-
контролирующий терминал;
-
процессорное время;
-
текущее состояние.
Команда ps отображает информацию о состоянии системы на тот момент, когда вы выполнили эту команду. Если вы наблюдаете за изменением состояния системы с течением времени, имейте в виду, что в то время, когда вы читаете с экрана информацию, полученную при помощи ps, эта информация уже несколько устарела. Далее перечислены наиболее часто используемые ключи команды ps. Более полный список ключей можно найти в страницах электронной документации ps(1). -e Доклад обо всех процессах
-f Показать владельца процесса по имени вместо UID в первой колонке. Этот ключ отменяет ключи -l, -t, -s и -r и включает -а
-l Генерирует длинный доклад, в котором содержатся все поля за исключением STIME
О чем докладывает команда ps Когда вы набираете ps -e и нажимаете Enter, вы получаете доклад о процессах, который выглядит приблизительно следующим образом:
sol% /usr/bin/ps -e
PIO TTY TIME COMD
0 ? 0:02 sched
1 ? 0:01 init
2 ? 0:00 pageout
192 ? 0:00 sac
79 ? 0:10 inetd
75 ? 0:01 in.route
136 ? 0:04 automon
143 ? 0:01 cron
123 ? 0:01 statd
104 ? 0:01 rpebind
106 ? 0:01 rpc.rwall
108 ? 0:01 rpc.ruse
110 ? 0:01 rpc.spra
113 ? 0:01 ypbind
115 ? 0:00 keyserv
117 ? 0:01 kerbd
127 ? 0:02 lockd
251 pts/0 0:00 ps
165 ? 0:00 sendmail
193 ? 0:01 ttymon
174 ? 0:03 syslogd
!56 ? 0:01 Ipsched
209 ? 0:02 in.rlogi
211 pts/0 0:03 csh
164 ? 0:00 IpNet
Описание колонок вывода ps
PID Идентификатор процесса (Process ID)
TTY Терминал, с которого запущен процесс (или его родитель). Если процесс не имеет контролирующего терминала, в этом ноле стоит знак вопроса (?). Процессы, помеченные знаком вопроса, как правило, являются системными процессами
TIME Суммарное процессорное время, используемое для выполнения данного процесса
COMD Имя команды, которая сгенерировала этот процесс. Обратите внимание, что при использовании команды ps -e в составе доклада отображаются только первые восемь символов имени файла
Если вы наберете ps -el и нажмете Enter, вы получите листинг, который выглядит следующим образом
sol% /usr/bin/ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME COMD
19 T 0 0 0 80 0 SY f010f1c8 0 ? 0:02 sched
8 S 0 1 0 251 1 20 ff1ad800 48 ff1ad9c4 ? 0:01 init
19 S 0 2 0 0 0 SY ff1ad000 0 ff1ad07d ? 0:00 pageout
8 S 0 192 0 49 1 20 ff1f7000 238 ff2de348 ? 0:00 sac
8 S 0 79 1 80 1 20 ff232800 291 f010f1a4 ? 0:10 inetd
8 S 0 75 1 80 1 20 ff249000 258 f010f1a4 ? 0:01 in.route
8 S 0 136 1 80 1 20 ff2c3000 327 f010f1a4 ? 0:04 automon
8 S 0 143 1 149 1 20 ff293000 287 ff2de448 ? 0:01 cron
8 S 0 123 1 80 1 20 ff28e000 270 f010f1a4 ? 0:01 statd
8 S 0 104 1 80 1 20 ff25a000 301 f010f1a4 ? 0:01 rpcbind
8 S 0 106 1 77 1 20 ff258800 272 f010f1a4 ? 0:01 rpc.rwall
8 S 0 108 1 80 1 20 ff260800 272 f010f1a4 ? 0:01 rpc.ruse
8 S 0 110 1 78 1 20 ff256600 272 f010f1a4 ? 0:01 rpc.spra
(остальные строки удалены из этого примера)
Описание полей этого листинга далее:
F Текущее состояние процесса. Обозначается шестнадцатиричным числом, представляющим собой сумму флагов
-
00 - Процесс завершен, его место в таблице процессов свободно
-
01 - Процесс является системным и всегда находится в памяти
-
02 - За процессом следит его родительский процесс
-
04 - За процессом следит родительский процесс, при этом процесс остановлен
-
08 - Процесс невозможно вывести из состояния ожидания сигналом
-
10 - Процесс в настоящее время находится в памяти и блокирован до момента, пока завершится событие
-
20 - Процесс нельзя переместить в виртуальную намять
S Текущее состояние процесса. Обозначается одной из латинских букв:
-
О - В текущий момент процесс исполняется процессором
-
S - Находится в состоянии ожидания (sleeping); ожидает завершения ввода/вывода
-
R - Готов к работе
-
I - Находится в состоянии холостого хода (Idle); процесс создается
-
Z - Зомби. Процесс завершил рабту и его родитель не ожидает, однако мертвый процесс все еще содержится в таблице процессов
-
Т - Остановлен, так как родительский процесс следит за ним
-
X - Ожидает выделения дополнительной памяти
UID Идентификатор пользователя (User ID), владеющего процессом
PID Идентификатор процесса (Process ID)
PPID Идентификатор родительского процесса
С Нагрузка на процессор, создаваемая процессом (оценка доли процессорного времени, используемого процессом)
PRI Приоритет выполнения процесса. Чем больше это число, тем ниже приоритет
NI Число nice, соответствующее процессу. Это число влияет на приоритет процесса. Чем больше это число, тем ниже приоритет процесса, а значит, тем меньше процесс расходует процессорного времени
SZ Объем виртуальной памяти, необходимой процессу. Это значение является неплохим показателем того, насколько процесс нуждается в системной памяти
TTY Терминал, с которого запущен процесс (или его родитель). Если процесс не имеет контролирующего терминала, в этом поле отображается знак вопроса (как правило, это означает, что процесс является системным)
TIME Общее количество процессорного времени, использованного па выполнение процесса с момента его запуска
COMD Команда, в результате выполнения которой начал работу процесс
Использование доклада ps Если вы просто хотите проверить, какие процессы и демоны в настоящий момент работают в системе, используйте команду ps -е. Если вы нуждаетесь в более подробной информации о работающих в системе процессах, используйте команду ps -el. Полный список ключей команды ps можно найти в страницах электронной документации ps(1). Когда у вас появится опыт, вы сможете заранее представлять себе, как именно будет выглядеть доклад, и сможете быстро обнаружить, что именно является аномалией. Чтобы идентифицировать потенциальные проблемы, вы можете использовать следующие соображения.
-
Обращайте внимание на множество идентичных заданий, принадлежащих одному и тому же пользователю. Подобная ситуация может возникнуть в случае, если кто-либо запустил сценарий, который породил множество фоновых задач, не ожидая при этом окончания работы каждой из них. Чтобы понять, в чем дело, обратитесь к пользователю. В случае необходимости используйте команду kill для того, чтобы уничтожить некоторые из задач.
-
Обращайте внимание на процессы, в поле TIME которых обозначено слишком большое количество процессорного времени. Слишком большое значение TIME Может указывать на то, что процесс находится в бесконечном цикле.
-
Обращайте внимание на поле С, при помощи которого вы можете обнаружить Маловажные процессы, потребляющие слишком большую долю процессорного времени. Если вы думаете, что некоторый процесс не имеет права на столь большое внимание со стороны ЦПУ, используйте команду priocntl для того, чтобы понизить его приоритет. Более подробно об этом рассказывается в страницах электронной документации priocntl(1).
-
Обращайте внимание на поле SZ, при помощи которого вы можете обнаружить процессы, использующие слишком большой объем памяти. Если процесс завладел слишком большим объемом памяти, вы можете уничтожить его. Если большое количество процессов нуждается в больших объемах памяти, возможно, в вашей системе следует установить больший объем ОЗУ.
-
Следите за процессами, которые со временем потребляют все большее количество процессорного времени. Это обстоятельство можно обнаружить, воспользовавшись ключом -f. Сравните стартовое время процесса (STIME) и суммарное процессорное время, потраченное на выполнение процесса (TIME).