Любой пользователь может получить список всех процессов выполняемых в системе. Для этого можно использовать параметр –e.
$ ps -e | head
PID TTY TIME CMD
1 ? 00:00:00 init
2 ? 00:00:00 migration/0
3 ? 00:00:00 ksoftirqd/0
4 ? 00:00:00 watchdog/0
5 ? 00:00:00 migration/1
6 ? 00:00:00 ksoftirqd/1
7 ? 00:00:00 watchdog/1
8 ? 00:00:00 events/0
9 ? 00:00:00 events/1
$
Обратите внимание на второй столбец TTY — это терминал, к которому подключены стандартный ввод, вывод и вывод ошибки данного процесса. Если в этом поле стоит знак вопроса, значит процесс не подключён к конкретному терминалу.
В примере показан не полный вывод программы ps, уж слишком большой он получился. Если вы хотите посчитать количество процессов, это можно сделать например так:
$ ps -e | sed -e '1d' | wc -l
126
$
В этом примере sed удаляет первую строку содержащую заголовок, остается только список процессов. А программа wc считает их количество.
Если необходимо посмотреть процессы определенного пользователя, используйте параметр –u.
Ниже показано как посмотреть процессы, выполняемые с правами пользователя apache.
$ ps -u apache
PID TTY TIME CMD
1137 ? 00:00:02 httpd
1143 ? 00:00:01 httpd
$
Параметр –t позволяет посмотреть процессы, подключенные к определенному терминалу. Например, так можно посмотреть процессы, выполняемые на терминале pts/1:
$ ps -t pts/1
PID TTY TIME CMD
1199 pts/1 00:00:00 ps
31542 pts/1 00:00:00 bash
$