KILL(1) | Команди користувача | KILL(1) |
НАЗВА
kill - переривання процесу
КОРОТКИЙ ОПИС
kill [-сигнал|-s сигнал|-p] [-q значення] [-a] [--timeout мілісекунди сигнал] [--] pid|назва...
kill -l [number|0xsigmask] | -L
kill -d pid
ОПИС
Команда kill надсилає вказаний сигнал вказаним процесам або групам процесів.
Якщо сигнал не вказано, буде надіслано сигнал TERM. Типовою дією у відповідь на цей сигнал є переривання роботи процесу. Цьому сигналу слід віддавати перевагу перед сигналом KILL (номер 9), оскільки процес може встановлювати обробник сигналу TERM з метою виконати заходи із чищення перед перериванням роботи у штатному режимі. Якщо роботу процесу не буде перервано після надсилання сигналу TERM, можна скористатися сигналом KILL, але слід зважати на те, що останній сигнал не може бути перехоплено, а отже, його використання не дасть цільовому процесу можливості виконати будь-яке чищення перед перериванням роботи.
У більшості сучасних командних оболонок є вбудована команда kill, користування якою є дуже подібним до команди, яку описано на цій сторінці підручника. Параметри --all, --pid та --queue та можливість вказувати процесів за назвою команди є локальними розширеннями можливостей.
Якщо значенням аргументу сигнал є 0, ніякого сигналу не буде надіслано, але буде виконано перевірку на помилки.
АРГУМЕНТИ
Список процесів, яким буде надіслано сигнали, може бути сумішшю назв і PID.
pid
n
0
-1
-n
_назва>
ПАРАМЕТРИ
-s, --signal _сигнал>
-l, --list [число|0xмаска-сигналу]
$ ps s $$ UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND 1000 1608069 0000000000000000 0000000000000002 0000000000384000 0000000008013003 Ss pts/44 0:02 zsh $ kill -l 0x0000000000384000 TERM TSTP TTIN TTOU
-L, --table
-a, --all
-p, --pid
-r, --require-handler
--verbose
-q, --queue _значення>
--timeout _мілісекунди сигнал>
Зауважте, що операційна система може повторно використовувати PID, і реалізація еквівалентної можливості у командній оболонці за допомогою kill і sleep може призвести до конкуренції, за якої наступний сигнал може бути надіслано іншому процесу, який повторно використав вже знищений PID.
Параметр --timeout може бути вказано декілька разів: сигнали буде надіслано послідовно із вказаними періодами очікування. Параметр --timeout може бути поєднано із параметром --queue.
Наприклад, вказана нижче команда надсилає сигнали QUIT, TERM та KILL послідовно і вмикає очікування у 1000 мілісекунд між надсиланнями сигналів:
kill --verbose --timeout 1000 TERM --timeout 1000 KILL \ --signal QUIT 12345
-d, --show-process-state pid
$ kill -d $$ Blocked: INT Ignored: TERM TSTP TTIN TTOU Caught: HUP INT PIPE ALRM CHLD WINCH
СТАН ВИХОДУ
У kill передбачено такі значення стану виходу:
0
1
64
ЗАУВАЖЕННЯ
Хоча як аргумент kill можна вказати TID (ідентифікатор потоку обробки, див. gettid(2)) одного з потоків обробки у багатопотоковому процесі, сигнал все одно буде надіслано процесу (тобто усій групі потоків обробки). Іншими словами, не можна надіслати сигнал явно вказаному потоку обробки у багатопотоковому процесі. Сигнал буде отримано довільно вибраним потоком, який не блокує сигнал, у процесі призначення. Докладніший опис наведено на сторінці підручника signal(7) та в описі CLONE_THREAD на сторінці підручника clone(2).
У різних командних оболонках реалізовано вбудовані команди kill, які мають вищий пріоритет за виконуваний файл kill(1), який описано у цьому підручнику. Найпростішим способом забезпечення виконання саме команди, яку описано на цій сторінці, є використання повного шляху для виклику команди. Приклад: /bin/kill --version
АВТОРИ
Salvatore Valente <svalente@mit.edu>, Karel Zak <kzak@redhat.com>
Початкову версію було запозичено з BSD 4.4.
ТАКОЖ ПЕРЕГЛЯНЬТЕ
bash(1), tcsh(1), sigaction(2), kill(2), sigqueue(3), signal(7) proc(5) proc_pid_status(5)
ЯК НАДІСЛАТИ ЗВІТ ПРО ВАДИ
Для звітування щодо вад скористайтеся системою стеження за вадами https://github.com/util-linux/util-linux/issues
ДОСТУП ДО ПРОГРАМИ
Програма kill є частиною пакунка util-linux, який можна отримати з архіву ядра Linux https://www.kernel.org/pub/linux/utils/util-linux/.
2025-03-29 | util-linux 2.41 |