Действия

FreeBSD - kill, killall - завершение процессов

Материал из Wiki - Iphoster - 'the best ever support'

Самые выгодные сервера‎ в рунете


kill, killall - завершение процессов

% kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN
TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 LWP

Несколько наиболее распространенных:

HUP или 1 - обычно посылает процессу указание перечитать настройки конфигурации;
INT или 2 - сигнал прерывания;
QUIT или 3 - выход, завершение;
ABRT или 6 - аварийное завершение;
KILL или 9 - безусловное завершение процесса, “убиение”;
ALRM или 14 - сигнал от таймера;
TERM или 15 - наиболее правильное и наиболее корректное завершение процесса.

Сигнал TERM используется для нормального выхода программы с сохранением всех данных. Наоборот, сигнал KILL используется если программа не отвечает. Данные, которые процесс не успел записать на диск, при этом не сохраняются. Рекомендуется использовать как можно реже, но если такая необходимость появилась, то комбинация killall -KILL process всегда выручит.


man kill на русском:

KILL(1)               Справочник основных команд FreeBSD               KILL(1)
НАЗВАНИЕ kill -- завершить выполнение процесса или послать ему сигнал
СИНТАКСИС kill [-s имя_сигнала] pid ... kill -l [статус_завершения] kill -имя_сигнала pid ... kill -номер_сигнала pid ...
ОПИСАНИЕ Утилита kill посылает сигнал процессам, указанным операндами pid.
Только суперпользователь может посылать сигналы процессам других пользо- вателей.
Имеются следующие опции:
-s имя_сигнала Символическое имя сигнала, задающее сигнал для отправки вместо сигнала TERM, используемого по умолчанию.
-l [статус_завершения] При отсутствии операнда, вывести список имён сигналов. В против- ном случае, напечатать имя сигнала, соответствующее указанному статусу завершения.
-имя_сигнала Символическое имя сигнала, задающее сигнал для отправки вместо сигнала TERM, используемого по умолчанию.
-номер_сигнала Неотрицательное десятичное целое, задающее сигнал для отправки вместо сигнала TERM, используемого по умолчанию.
Следующие идентификаторы процессов (PID) имеют специальные значения:
-1 В случае использования суперпользователем, послать сигнал всем процессам, иначе послать сигнал всем процессам, принадлежащим пользователю.
Некоторые из наиболее часто используемых сигналов:
1 HUP (hang up, обрыв линии) 2 INT (interrupt, прерывание) 3 QUIT (quit, завершение) 6 ABRT (abort, аварийное завершение) 9 KILL (kill, неуловимый, не игнорируемый сигнал завершения) 14 ALRM (alarm clock, будильник) 15 TERM (сигнал программного завершения)
Некоторые командные оболочки имеют встроенную команду kill с похожей либо идентичной функциональностью. Обратитесь к странице справочника builtin(1).
СТАТУС ЗАВЕРШЕНИЯ Утилита kill возвращает 0 в случае успешного завершения и >0 в случае возникновения ошибки.
ПРИМЕРЫ Завершить процессы, имеющие идентификаторы 142 и 157:
kill 142 157
Послать сигнал обрыва (SIGHUP) процессу с идентификатором 507:
kill -s HUP 507
Послать сигнал завершения группе процессов, имеющих идентификатор группы процессов (PGID) 117:
kill -- -117
СМОТРИ ТАКЖЕ builtin(1), csh(1), killall(1), ps(1), kill(2), sigaction(2)
СТАНДАРТЫ Предполагается, что утилита kill совместима со стандартом IEEE Std 1003.2 (``POSIX.2).
ИСТОРИЯ Команда kill появилась в Version 3 AT&T UNIX. ПРОБЛЕМЫ Для пользователей csh(1) должна быть предусмотрена замена команды ``kill 0.
FreeBSD 7.1 28 апреля 1995 FreeBSD 7.1


man killall на русском:

KILLALL(1)            Справочник основных команд FreeBSD            KILLALL(1)
НАЗВАНИЕ
    killall -- уничтожить процессы по имени 
СИНТАКСИС killall [-delmsvz] [-help] [-j jid] [-u пользователь] [-t терминал] [-c имя_процесса] [-СИГНАЛ] [имя_процесса ...]
ОПИСАНИЕ Утилита killall уничтожает процессы по заданному имени процесса, в отли- чии от утилиты kill(1), которая работает с идентификатором процесса. По умолчанию, killall посылает сигнал TERM всем процессам с тем же реальным UID, что и у вызвавшего её пользователя, и имя которых совпадает с ука- занным аргументом имя_процесса именем. Суперпользователь может уничто- жить любой процесс.
Имеются следующие опции:
-d | -v Вывести более подробный отчёт о работе утилиты. Если указана только опция -d, будет выведен список процессов, которым будет послан выбранный сигнал, либо сообщение о том, что подходящих процессов найдено не было.
-e Использовать эффективный идентификатор пользователя вме- сто реального идентификатора пользователя (это происхо- дит по умолчанию) для поиска процессов при указании опции -u.
-help Вывести подсказку по использованию команды и выйти.
-l Вывести список имён доступных сигналов и выйти, как в kill(1).
-m Сопоставлять имена процессов с указанным в аргументе имя_процесса регулярным выражением, с учётом регистра. ВНИМАНИЕ! С осторожностью используйте эту опцию. Например, одиночная точка будет соответствовать любому процессу, запущенному под реальным UID вызвавшего ути- литу пользователя.
-s Только показать что было бы сделано, но не посылать при этом никаких сигналов.
-СИГНАЛ Послать отличный от TERM сигнал. Сигнал может быть ука- зан как по имени (с приставкой ``SIG или без неё), так и по номеру.
-j jid Завершить процессы в jail, указанной по jid.
-u пользователь Ограничить потенциально подходящие процессы теми, что принадлежат указанному пользователю.
-t терминал Ограничить потенциально подходящие процессы теми, что запущены на указанном терминале.
-c имя_процесса Ограничить потенциально подходящие процессы теми, у которых имя совпадает с аргументом имя_процесса.
-z Не игнорировать процессы-зомби. Это никак не должно повлиять на работу утилиты, за исключением того, что killall выведет несколько сообщений об ошибках при обна- ружении подходящих процессов-зомби.
ВСЕ ПРОЦЕССЫ Утилита kill(1) уже имеет возможность передачи сигнала всем процессам с заданным UID, поэтому для такого рода задачи следует использовать kill(1). Например, ``kill -TERM -1 или с правами суперпользователя ``echo kill -TERM -1 | su -m <user>.
СТАТУС ЗАВЕРШЕНИЯ Утилита killall возвращает 0, если были найдены подходящие процессы и им успешно был послан сигнал. В противном случае, killall возвращает 1.
ДИАГНОСТИКА Отладочные сообщения будут выводиться только в случае использования опции -d.
СМОТРИ ТАКЖЕ kill(1), pkill(1), sysctl(3), jail(8)
ИСТОРИЯ Команда killall появилась во FreeBSD 2.1. Она была смоделирована по образу и подобию команды killall, доступной на других платформах.
АВТОРЫ Изначально программу killall написал на Perl Wolfram Schneider. Эту страницу справочника написал Jrg Wunsch. Текущую версию утилиты killall, использующую интерфейс sysctl(3), переписал на C Peter Wemm.
FreeBSD 7.1 9 ноября 2007 FreeBSD 7.1