Командная строка Linux. Полное руководство - [38]

Шрифт
Интервал

Так как в системе одновременно выполняется множество процессов, ps производит довольно длинные списки. Часто бывает полезно передать вывод ps команде less через конвейер, чтобы его проще было просматривать. Некоторые комбинации параметров приводят к выводу очень длинных строк, поэтому нелишним будет также распахнуть окно эмулятора терминала на весь экран.

В этом примере в выводе появился новый столбец — STAT. Название STAT — это сокращение от state (состояние), столбец содержит информацию о текущем состоянии процесса, как показано в табл. 10.1.

Таблица 10.1. Состояния процессов

Состояние

Значение

R

Выполняется. Процесс выполняется или готов к выполнению

S

Приостановлен. Процесс временно не выполняется; скорее всего, находится в ожидании определенного события, такого как нажатие клавиши или прибытие сетевого пакета

D

Приостановлен без возможности прерывания. Процесс ожидает завершения операции ввода/вывода, например, дисковым устройством

T

Остановлен. Процесс принудительно остановлен (подробнее об этом рассказывается ниже)

Z

Недействующий процесс-«зомби». Это дочерний процесс, который завершился, но не был удален родителем

<

Высокоприоритетный процесс. Существует возможность наиболее важным процессам выделить больше процессорного времени. Данное свойство процесса называется niceness (уступчивость). Про процессы с более высокими приоритетами говорят, что они менее уступчивы, потому что потребляют больше процессорного времени, оставляя меньше другим процессам

N

Низкоприоритетный процесс. Процесс с низким приоритетом (или уступчивый процесс) получает процессорное время только после того, как будут обслужены процессы с более высоким приоритетом


Символ, описывающий состояние процесса, может сопровождаться другими символами. Они отражают некоторые экзотические характеристики процессов. За дополнительной информацией обращайтесь к странице справочного руководства (man) для ps.

Еще одна популярная комбинация параметров — aux (без дефиса в начале). Она позволяет получить еще больше информации:

[me@linuxbox ~]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 2136 644 ? Ss Mar05 0:31 init

root 2 0.0 0.0 0 0 ? S< Mar05 0:00 [kt]

root 3 0.0 0.0 0 0 ? S< Mar05 0:00 [mi]

root 4 0.0 0.0 0 0 ? S< Mar05 0:00 [ks]

root 5 0.0 0.0 0 0 ? S< Mar05 0:06 [wa]

root 6 0.0 0.0 0 0 ? S< Mar05 0:36 [ev]

root 7 0.0 0.0 0 0 ? S< Mar05 0:00 [kh]

и еще много других процессов...

Эта комбинация параметров выводит процессы, принадлежащие всем пользователям. При использовании параметров без начального дефиса команда действует «в стиле BSD». Linux-версия команды ps может имитировать поведение программы ps, используемой в некоторых реализациях Unix. С помощью этих параметров мы получили дополнительные столбцы, описанные в табл. 10.2.

Таблица 10.2. Заголовки столбцов при выполнении ps в стиле BSD

Заголовок

Значение

USER

Идентификатор пользователя. Это владелец процесса

%CPU

Использование процессора в процентах

%MEM

Использование памяти в процентах

VSZ

Объем виртуальной памяти

RSS

Размер страниц памяти. Объем физической памяти (ОЗУ), используемой процессом, кб

START

Время запуска процесса. Для значений свыше 24 часов выводится дата


Просмотр состояния процессов в динамике с помощью top


Команда ps предоставляет массу информации о том, что делается в компьютере, но она дает только мгновенный снимок, то есть возвращаемая ею информация действительна лишь на момент вызова команды. Чтобы увидеть работу компьютера в динамике, воспользуемся командой top:

[me@linuxbox ~]$ top

Программа top постоянно обновляет информацию о процессах (по умолчанию с периодом, равным 3 секундам), чтобы показать их активность с течением времени. Имя программы top отражает тот факт, что она используется для просмотра «топа» (наиболее активных) процессов в системе. Вывод команды top делится на две части: сводная информация о системе и таблица процессов, отсортированных по потреблению ими процессора:

top - 14:59:20 up 6:30, 2 users, load average: 0.07, 0.02, 0.00

Tasks: 109 total, 1 running, 106 sleeping, 0 stopped, 2 zombie

Cpu(s): 0.7%us, 1.0%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si

Mem: 319496k total, 314860k used, 4636k free, 19392k buff

Swap: 875500k total, 149128k used, 726372k free, 114676k cach

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

6244 me 39 19 31752 3124 2188 S 6.3 1.0 16:24.42 trackerd

11071 me 20 0 2304 1092 840 R 1.3 0.3 0:00.14 top

6180 me 20 0 2700 1100 772 S 0.7 0.3 0:03.66 dbus-dae

6321 me 20 0 20944 7248 6560 S 0.7 2.3 2:51.38 multiloa

4955 root 20 0 104m 9668 5776 S 0.3 3.0 2:19.39 Xorg

1 root 20 0 2976 528 476 S 0.0 0.2 0:03.14 init

2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd

3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migratio