Настольная книга по Linux/Процессы
Поиск и отправка сигналов
[править]Список процессов текущего пользователя, связанных с текущим терминалом:[1]
$ ps
… В различных предопределенных форматах:
$ ps -f $ ps -F $ ps s $ ps u $ ps v $ ps X
… Связанных с любым терминалом:[1]
$ ps -a
… Всех процессов текущего пользователя:
$ ps x
… Всех пользователей:
$ ps -A $ ps ax
Поиск процессов с именами foo, bar (другими словами — запущенных данными командами):
$ ps -C foo -C bar $ pidof -- foo bar $ pgrep -- 'foo|bar'
… «Поиск» процессов с идентификаторами 1023 и 65537:
$ ps -p 1023 -p 65537
… Всех процессов, выполняемых от имени пользователя jrh:[1]
$ ps -u jrh $ ps -U jrh
… Всех процессов, выполняемых с привилегиями группы rug:
$ ps -g jrh $ ps -G jrh
Поиск процессов по регулярному выражению (foo|bar).*baz. Подобные команды на практике используются довольно часто, хотя обычно не вполне корректно — поскольку в отличие от примеров выше, с шаблоном сравнивается не какой-либо конкретный элемент информации о процессе (команда, пользователь, терминал, etc.), но строка вывода команды ps(1) в целом.
$ ps ax | grep -E -- '(foo|bar).*baz'
Отправка сигнала завершения (
SIGTERM
) процессам 1023, 65537:$ kill -- 1023 65537
… Сигнала потери управляющего терминала (
SIGHUP
= 1; зачастую используется как команда «перезагрузки» конфигурационных файлов для процессов-демонов):$ kill -HUP -- 1023 65537 $ kill -1 -- 1023 65537
… Отправка сигнала
SIGHUP
процессам с именем apache2:$ killall -HUP -- apache2 $ pkill -HUP -- apache2
… С именем, удовлетворяющим регулярному выражению (foo|bar).*baz:
$ pkill -HUP -- '(foo|bar).*baz'
Принудительное (безусловное) завершение процессов 1023 и 65537:
$ kill -KILL -- 1023 65537 $ kill -9 -- 1023 65537
… Останов и возобновление (для интерактивных — связанных с терминалом — процессов, обычно — C-z и команда
fg
интерпретатора):$ kill -STOP -- 1023 65537 $ kill -CONT -- 1023 65537
Приоритеты
[править]Запуск команды foo --bar с наименьшим приоритетом (наивысшим nice-значением) по процессорному времени:[2]
$ nice -n+20 -- foo --bar
… С наименьшим приоритетом по времени ввода-вывода:
$ ionice -c 3 -- foo --bar
… С наименьшим приоритетом как по процессорному времени, так и по времени ввода-вывода:
$ ionice -c 3 nice -n+20 -- foo --bar $ nice -n+20 ionice -c 3 -- foo --bar
Изменение приоритета по процессорному времени на наименьший для процессов 1023 и 65537[3] (обратите внимание, что обратное действие — увеличение приоритетов процессов — является привилегированным):
$ renice +20 -- 1023 65537
… Приоритета по времени ввода-вывода:
$ ionice -c 3 -p 1023 ; ionice -c 3 -p 65537
… Обоих приоритетов:
$ (set -- 1023 65537 ; \ renice +20 -- "$@" ; for p ; do ionice -c 3 -p "$p" ; done)
Фоновые задачи
[править]Запуск фоновой задачи foo --bar с защитой от сигнала потери управляющего терминала (
SIGHUP
— как, например, при разрыве SSH-соединения) и перенаправлением стандартного вывода и стандартного потока ошибок в файлnohup.out
[4] (см. также подраздел Мультиплексоры раздела Текстовые терминалы):$ nohup -- foo --bar &
Файловая система /proc
[править]Значительную часть информации о процессе 65537 можно найти в файлах директории /proc/65537
«виртуальной» файловой системы proc(5).[5]
Вывести общую информацию о процессе 65537:
$ cat < /proc/65537/status
… Об использовании памяти, в более удобном для «машинного разбора» формате:
$ cat < /proc/65537/statm
Поиск процессов, использующих файл filename:
$ lsof -- filename $ find -L /proc/*/fd -maxdepth 1 -samefile filename -printf %h\\n) \ | uniq | cut -d/ -f3 $ find -L /proc/*/fd -maxdepth 1 -samefile filename) \ | cut -d/ -f3 | uniq
… Использующих файл с каноническим именем /absolute/filename:
$ lsof -- /absolute/filename $ find /proc/*/fd -lname /absolute/filename -printf %h\\n) \ | uniq | cut -d/ -f3 $ find /proc/*/fd -lname /absolute/filename) \ | cut -d/ -f3 | uniq
См. также
[править]- Разделы Shell и Текстовые терминалы.
- Страницы руководства:
Примечания
[править]- ↑ а б в ps(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
- ↑ nice(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
- ↑ renice(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
- ↑ nohup(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
- ↑ The /proc filesystem(англ.) Linux Kernel Documentation Проверено 2015-05-03 г.