- •Управление процессами в ос Linux План занятия
- •1. Процессы
- •1.1. Дерево процессов
- •1.2. Сигналы
- •2. Информация о процессах: ps и pstree
- •3. Отправка сигналов процессам: kill, killall и top
- •3.2. Объединение ps и kill: top
- •4. Установка приоритетов для процессов: nice, renice
- •4.3. Утилита vmstat
- •4.4. Утилита uptime
- •4.5. Утилита at
- •4.6. Использование crontab
- •5. Запуск и обработка фоновых процессов: управление заданиями
- •6. Выполните самостоятельно
2. Информация о процессах: ps и pstree
Эти две команды выводят список процессов, запущенных на данный момент в системе, согласно установленным вами критериям. pstree выводит информацию в более понятном виде по сравнению с ps -f.
2.1. ps
Запуск ps без аргументов покажет только те процессы, что были запущены вами, и которые привязаны к используемому вами терминалу:
$ ps
PID TTY TIME CMD
18614 pts/3 00:00:00 bash
20173 pts/3 00:00:00 ps
Как и многие утилиты UNIX®, ps обладает рядом полезных опций, наиболее общими из которых являются:
-
a: выводит процессы, запущенные всеми пользователями;
-
x: выводит процессы без управляющего терминала или с управляющим терминалом, но отличающимся от используемого вами;
-
u: выводит для каждого из процессов имя запустившего его пользователя и время запуска.
Вывод ps разделен на несколько полей: чаще всего вас будет интересовать поле PID, содержащее идентификатор процесса. Поле CMD содержит имя выполняемой команды. Чаще всего команда ps вызывается так:
$ ps ax | less
При этом вы получите список всех запущенных на данный момент процессов, что даст вам возможность определить один или несколько проблемных процессов и уничтожить их.
2.2. pstree
Команда pstree выводит процессы в форме дерева. Основным преимуществом является то, что вы сразу можете увидеть родительские процессы: если вам нужно уничтожить целую серию процессов, а они все происходят от одного родителя, вы можете просто убить этот родительский процесс. Вам придется воспользоваться опцией -p для вывода PID всех процессов и опцией -u для вывода имени пользователя, запустившего процесс. Т.к. дерево зачастую довольно большое, вам потребуется запустить pstree следующим образом:
$ pstree -up | more
При этом вы получите обзор всей структуры дерева процессов.
3. Отправка сигналов процессам: kill, killall и top
3.1. kill, killall
Эти две команды используются для отправки сигналов процессам. Для команды kill требуется номер процесса в качестве аргумента, а для killall требуется имя процесса.
Обе эти команды допускают опциональное использование аргумента с номером сигнала, отправляемого процессу. По умолчанию они обе отправляют соответствующим процессам сигнал 15 (TERM). Например, если вам нужно убить процесс с PID 785, используйте команду:
$ kill 785
Если вам нужно отправить ему сигнал 19 (STOP), введите:
$ kill -19 785
Допустим обратное, т.е. вам нужно убить процесс, для которого вы знаете имя команды. Вместо того, чтобы искать номер процесса при помощи команды ps, вы можете убить его по имени. Если имя процесса «mozilla», вы можете воспользоваться командой:
$ killall -9 mozilla
В любом случае вы убьете только свои собственные процессы (только если вы не root), поэтому вам не стоит волноваться о процессах других пользователей, если работаете в многопользовательской системе, так как на них это не повлияет.
