Основы Slackware Linux

s


Итак, вы знаете, как переключаться между запущенными вами из командной строки фоновыми процессами. Так же вы знаете, что есть ещё много других процессов, которые всё время выполняются. Как же посмотреть их список? Вам надо воспользоваться ps(1) командой. У неё есть множество различных опций, здесь будут описаны лишь самые основные. Для подробной информации смотрите man страницу для ps. Man страницы описаны в разделе 2.2.1.

Простой набор ps выдаст список программ, выполняемых на терминале. Довольно часто этот список будет невелик:

$ ps

PID TTY TIME CMD
7923     ttyp0     00:00:00     bash
8059 ttyp0 00:00:00 ps

Не смотря на то, что процессов немного, информация довольно типичная. Сколько бы у вас не было процессов, при простом использовании ps столбцы будут теми же. Что же означает вся эта информация?

Итак, по порядку: PID это идентификационный номер (ID) процесса. Каждый выполняющийся процесс получает уникальный идентификатор. В 2.2.х ядрах ID процессов может быть любым числом от 1 и до 32767. Каждому процессу присваивается следующий свободный PID. Когда процесс завершается, его номер освобождается. Когда достигнут максимальный PID, следующий свободный будет взят из наименьшего освобождённого. Скорее всего, это изменится в ядре 2.4, и будут представлены новые 32-х битовые PID.

TTY столбец показывает, на каком терминале процесс выполняется. Простое выполнение ps покажет процессы выполняемые на текущем терминале, так что для всех процессов будет выведена идентичная информация в TTY столбце. Как видно из примера, оба показанных процесса выполняются на терминале ttyp0. Это говорит нам о том, что эти процессы запущены либо удалённо, либо из какого-то X терминала.

Столбец TIME показывает, сколько процессорного времени выполняется процесс. Оно не является фактическим временем, с момента запуска процесса. Помните, что Linux это многозадачная операционная система. В любой момент времени есть несколько выполняемых процессов, и каждый из этих процессов получает небольшую порцию процессорного времени. Так вот, информация указанная в столбце TIME, показывает время, которое гораздо меньше фактического времени выполнения процесса. Если вы это время больше, чем несколько минут у одного из процессов, то скорее всего, что-то не так.




Ну и наконец, CMD столбец, показывает что же это за программа. Отображается только имя программы; опции командной строки и аналогичная информация не выводится. Для того чтобы увидеть эту информацию, вам необходимо воспользоваться одной из многих опций программы ps. Давайте обсудим некоторые из них вкратце.

Вы можете получить полный список выполняемых в вашей системе процессов, воспользовавшись правильным набором опций. Скорее вы захотите вывести расширенный список процессов. Давайте попробуем:

$ 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]
(output cut)
Большинство из этих процессов запускаются при старте почти любого компьютера, работающего под Linux. В своей системе я сделал несколько изменений, так что вы скорее всего увидите что-то другое. Но всё же большинство из перечисленных процессов вы увидите в вашей системе. Как вы видите, опции заданные программе в этом примере, заставляют её выводить не только имена программ, но и опций с которыми они были выполнены. А так же ещё несколько новых столбцов с интересной информацией.

Наверное вам сразу бросится в глаза, что большинство из процессов выполняются на tty ''?''. Это процессы, запущенные с более не активного терминала. И поэтому они больше не принадлежат определённому терминалу.



Так же вы видите новый столбец: STAT. Он показывает состояние (status) процесса. S используется для спящего (sleeping) процесса: процесс ожидает, пока что-то произойдёт. Z используется для зомбиованных процессов (zombied). Это такие процессы, родительский процесс которых умер, оставив дочерние процессы рабочими. Это не есть хорошо.

Если вы хотите увидеть ещё больше информации о выполняемых процессах, попробуйте такую команду:

$ 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]
(output cut)
Это достаточно полный набор информации. Здесь вы видите новые столбцы, которые описывают: какой пользователь запустил процесс, сколько системных ресурсов использует процесс (%CPU, %MEM, VSZ и RSS столбцы), и дату, когда процесс был запущен. Очевидно, здесь предоставлено достаточно информации о процессах, которая может быть полезна для системного администратора. Так же мы встретились с ещё одной проблемой: информация не помещается на экране. Опция ''-w'' исправит это.

Вывод команды не очень красив, но весьма полезен работает. И всё же мы ещё не увидели всей доступной информации по выполняемым процессам. Есть ещё много разнообразной информации, которую вы можете получить о каждом из процессов. Загляните в man страницу для программы ps. Тем не менее, опции описанные в этом разделе являются наиболее часто применяемыми. И наверное вы будете пользоваться в основном ими.


Содержание раздела