Оглавление | Предыдущая страница | Следующая страница
Программа ps выводит список процессов системы.
ps [параметры]
Если программу запустить без параметров, будет показан список процессов выполняемых текущим пользователем на текущем терминале.
$ ps PID TTY TIME CMD 4141 pts/2 00:00:00 bash 4217 pts/2 00:00:00 ps $
Ниже показаны поля, которые вывела программа.
Любой пользователь может получить список всех процессов выполняемых в системе. Для этого можно использовать параметр –e.
$ ps -e
PID TTY TIME CMD
1 ? 00:00:00 init
2 ? 00:00:00 ksoftirqd/0
3 ? 00:00:00 events/0
4 ? 00:00:00 khelper
5 ? 00:00:00 kthread
7 ? 00:00:00 kacpid
100 ? 00:00:00 kblockd/0
143 ? 00:00:00 pdflush
144 ? 00:00:00 pdflush
......
4197 pts/4 00:00:00 sh
4202 pts/4 00:00:00 most
4224 ? 00:00:00 kio_file
4225 pts/2 00:00:00 ps
$
Обратите внимание на второй столбец TTY -- это терминал, к которому подключены стандартный ввод, вывод и вывод ошибки данного процесса. Если в этом поле стоит знак вопроса -- значит процесс не подключён к конкретному терминалу.
В примере показан не полный вывод программы ps, уж слишком большой он получился. Если Вы хотите посчитать количество процессов, это можно сделать например так:
$ ps -e | sed -e '1d' | wc -l 75 $
В этом примере sed удаляет первую строку содержащую заголовок, остается только список процессов. А программа wc считает их количество.
Если необходимо посмотреть процессы определенного пользователя, используйте параметр –u. Ниже показано как посмотреть процессы, выполняемые с правами пользователя daemon.
$ ps -u daemon PID TTY TIME CMD 3678 ? 00:00:00 named 3712 ? 00:00:00 atd $
Параметр –t позволяет посмотреть процессы, подключенные к определенному терминалу. Например, так можно посмотреть процессы, выполняемые на терминале pts/4:
$ ps -t pts/4 PID TTY TIME CMD 4167 pts/4 00:00:00 bash 4193 pts/4 00:00:00 man 4196 pts/4 00:00:00 sh 4197 pts/4 00:00:00 sh 4202 pts/4 00:00:00 most $
Если Вы хотите решать какие поля должна выводить программа ps, используйте параметр –o. Параметр требует указание дополнительных опций. Ниже приведены некоторые из них.
Например, необходимо посмотреть список всех процессов системы с указание PID, PPID, терминала и имени программы. Тогда ps должна быть запущена со следующими аргументами:
$ ps -eo pid,ppid,tty,comm
PID PPID TT COMMAND
1 0 ? init
2 1 ? ksoftirqd/0
3 1 ? events/0
4 1 ? khelper
5 1 ? kthread
7 5 ? kacpid
100 5 ? kblockd/0
143 5 ? pdflush
......
4266 4265 pts/2 sh
4271 4266 pts/2 most
4329 3994 ? kio_file
4332 4154 pts/3 ps
$
Администраторы используют программу ps в основном для того, что бы узнать работает ли интересующий его процесс. И если он работает, то с каким PID он выполняется. Например, необходимо узнать работает ли почтовый сервер sendmail и если он работает, то какие конкретные процессы и с каким PID сейчас находятся в системе. Для выяснения этой информации воспользуемся программами ps и grep:
$ ps -e | grep sendmail 3527 ? 00:00:00 sendmail 3530 ? 00:00:00 sendmail $
Еще одна программа, которая может помочь в решении этой задачи — это pgrep.