С точки зрения системы, приложения выполняются в одном или нескольких процессах, которые потребляют системные ресурсы, такие как память и процессорное время. Мы опишем некоторые команды для отслеживания этих процессов и управления ими, а, следовательно, и приложениями, которым они принадлежат.
Команда ps выдает, согласно указанному вами критерию, список процессов, которые выполняются в системе в настоящий момент.
Запуск ps без аргументов покажет только те процессы, что были запущены вами, и привязаны к используемому вами терминалу:
$ ps PID TTY TIME CMD 18614 pts/3 00:00:00 bash 20173 pts/3 00:00:00 ps
Процессы контролируются с помощью сигналов. Команды kill и killall используются для того чтобы посылать сигналы процессам. Команда kill требует в качестве аргумента номер процесса, а команда killall требует имя процесса.
Помните, пожалуйста, что разные процессы по-разному реагируют на одни и те же сигналы. При послании сигнала вы не можете a priori ожидать, что процесс поведет себя так, как вы думаете.
kill <номер_процесса>
killall <имя_процесса>
Сигналы можно указывать по имени или по номеру. Чтобы увидеть список доступных сигналов, выполните kill -l. Наиболее часто используются следующие сигналы:
-
TERM
или15
: этот сигнал посылается по умолчанию, если имя или номер не заданы. Он элегантно прекращает процесс. -
STOP
или19
: этот сигнал используется для временной приостановки процесса. Для возобновления работы ему следует послать сигналCONT
или18
. -
KILL
или9
: этот сигнал используется для принудительного прерывания процесса. Его часто используют, когда процесс больше ни на что не отвечает (он «заморожен»). Прекращение работы происходит внезапно.
-
kill 785: просит процесс под номером
785
завершить работу, дав ему шанс произвести все требуемые завершающие действия; -
kill -KILL 785: вынуждает процесс под номером
785
завершиться, не предоставляя ему никаких возможностей произвести завершающие операции. Процесс прекращает работу немедленно; -
killall -TERM make: просит прекратить работу все процессы по имени
make
, запущенные текущим пользователем.
Что бы ни случилось, вы можете контролировать только свои процессы (если только вы не root
), так что не надо волноваться о процессах других пользователей, на них вы никак не повлияете.
top – это программа, одновременно выполняющая роль ps и kill, которая также используется для отслеживания процессов в реальном времени, выдавая информацию об использовании CPU и памяти, времени выполнения, и так далее, как показано на Рисунок 19.1, «Отслеживание процессов с помощью top».
Утилита top управляется исключительно клавиатурой. Команды зависят от регистра. Справку можно вызвать нажатием клавиши h. Наиболее полезными командами являются:
-
k: послать сигнал процессу. У вас спросят PID процесса, за которым следует ввести номер или имя посылаемого сигнала (по умолчанию это
TERM
или15
); -
M: упорядочить вывод процессов по количеству потребляемой памяти (поле
%MEM
); -
P: упорядочить вывод процессов по потребляемому времени CPU (поле
%CPU
): по умолчанию процессы сортируются именно так; -
u: отображает процессы конкретного пользователя. Вас попросят ввести имя пользователя, а не его UID. Если имя не введено, будут показаны все процессы;
-
i: по умолчанию отображаются все процессы, даже спящие. Этой командой выводятся только выполняющиеся процессы (процессы, поле
STAT
которых показываетR
, Running), и никакие другие. Повторное применение этой команды возвращает вас к отображению всех процессов.