С точки зрения системы, приложения выполняются в одном или нескольких процессах, которые потребляют системные ресурсы, такие как память и процессорное время. Мы опишем некоторые команды для отслеживания этих процессов и управления ими, а, следовательно, и приложениями, которым они принадлежат.
Команда 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), и никакие другие. Повторное применение этой команды возвращает вас к отображению всех процессов.
