Настольная книга по 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) 
    

Фоновые задачи

править

Файловая система /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 
    

См. также

править

Примечания

править
  1. а б в ps(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
  2. nice(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
  3. renice(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
  4. nohup(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-03 г.
  5. The /proc filesystem(англ.) Linux Kernel Documentation Проверено 2015-05-03 г.