KILL(1)

НАЗВА
kill — переривання процесу

КОРОТКИЙ ОПИС

kill [-сигнал|-s сигнал|-p] [-q значення] [-a] [--timeout мілісекунди сигнал] [--] pid|назва...

kill -l [число] | -L

ОПИС

Команда kill надсилає вказаний сигнал вказаним процесам або групам процесів.

Якщо сигнал не вказано, буде надіслано сигнал TERM. Типовою дією у відповідь на цей сигнал є переривання роботи процесу. Цьому сигналу слід віддавати перевагу перед сигналом KILL (номер 9), оскільки процес може встановлювати обробник сигналу TERM з метою виконати заходи із чищення перед перериванням роботи у штатному режимі. Якщо роботу процесу не буде перервано після надсилання сигналу TERM, можна скористатися сигналом KILL, але слід зважати на те, що останній сигнал не може бути перехоплено, а отже, його використання не дасть цільовому процесу можливості виконати будь-яке чищення перед перериванням роботи.

У більшості сучасних командних оболонок є вбудована команда kill, користування якою є дуже подібним до команди, яку описано на цій сторінці підручника. Параметри --all, --pid та --queue та можливість вказувати процесів за назвою команди є локальними розширеннями можливостей.

Якщо значенням аргументу сигнал є 0, ніякого сигналу не буде надіслано, але буде виконано перевірку на помилки.

АРГУМЕНТИ

Список процесів, яким буде надіслано сигнали, може бути сумішшю назв і PID.

pid
    Кожен запис pid можна вказати в один з таких способів:

    n
        де n є більшим за 0. Сигнал буде надіслано процесу із PID n.

    0
        Сигнал буде надіслано усім процесам поточної групи процесів.

    -1
        Сигнал буде надіслано усім процесам із PID, який перевищує 1.

    -n
        де n є більшим за 1. Сигнал буде надіслано усім процесам у групі процесів n. Якщо задано аргумент у формі '-n', і його призначено для позначення групи процесів, або спочатку має бути вказано сигнал, або перед аргументом має бути вказано параметр '--'. Якщо цього не зроблено, аргумент вважатиметься сигналом, який слід надіслати.

назва
    Сигнал буде надіслано усім процесам, які викликано з використанням цієї назви.

ПАРАМЕТРИ

-s, --signal сигнал
    Сигнал, який слід надіслати. Можна вказати у формі назви або числа.

-l, --list [число]
    Вивести список назв сигналів або перетворити заданий номер сигналу на назву. Список сигналів наведено у файлі /usr/include/linux/signal.h.

-L, --table
    Подібний до -l, але призводить до виведення назв сигналів і відповідних їм чисел.

-a, --all
    не обмежувати перетворення назв на pid процесами з тим самим UID, що і поточний процес.

-p, --pid
    Вивести лише ідентифікатори іменованих процесів (PID), не надсилати жодних сигналів.

--verbose
    Вивести PID, яким буде надіслано сигнали kill разом із сигналами.

-q, --queue значення
    Надіслати сигнал за допомогою sigqueue(3), а не kill(2). Аргументом значення є ціле число, яке буде надіслано разом із сигналом. Якщо процес-отримувач встановив обробник для цього сигналу за допомогою прапорця SA_SIGINFO sigaction(2), процес може отримати ці дані за допомогою поля si_sigval структури siginfo_t.

--timeout мілісекунди сигнал
    Надіслати процесу сигнал, який визначено у звичний спосіб, а потім додатковий сигнал після вказаної затримки. Використання параметра --timeout призведе до того, що kill очікуватиме протягом періоду, який визначено аргументом мілісекунди, перш ніж надсилати наступний сигнал процесу. Цю можливість реалізовано з використанням можливості ядра Linux з використання дескрипторів файлів PID з метою гарантувати те, що наступний сигнал буде надіслано тому самому процесу або не буде надіслано взагалі, якщо процесу більше не існує.

    Зауважте, що операційна система може повторно використовувати PID, і реалізація еквівалентної можливості у командній оболонці за допомогою kill і sleep може призвести до конкуренції, за якої наступний сигнал може бути надіслано іншому процесу, який повторно використав вже знищений PID.

    Параметр --timeout може бути вказано декілька разів: сигнали буде надіслано послідовно із вказаними періодами очікування. Параметр --timeout може бути поєднано із параметром --queue.

    Наприклад, вказана нижче команда надсилає сигнали QUIT, TERM та KILL послідовно і вмикає очікування у 1000 мілісекунд між надсиланнями сигналів:

        kill --verbose --timeout 1000 TERM --timeout 1000 KILL \
                --signal QUIT 12345

СТАН ВИХОДУ

У kill передбачено такі значення стану виходу:

0
    успіх

1
    невдача

64
    частковий успіх (якщо вказано декілька процесів)

ПРИМІТКИ

Хоча як аргумент kill можна вказати TID (ідентифікатор потоку обробки, див. gettid(2)) одного з потоків обробки у багатопотоковому процесі, сигнал все одно буде надіслано процесу (тобто усій групі потоків обробки). Іншими словами, не можна надіслати сигнал явно вказаному потоку обробки у багатопотоковому процесі. Сигнал буде отримано довільно вибраним потоком, який не блокує сигнал, у процесі призначення. Докладніший опис наведено на сторінці підручника signal(7) та в описі CLONE_THREAD на сторінці підручника clone(2).

У різних командних оболонках реалізовано вбудовані команди kill, які мають вищий пріоритет за виконуваний файл kill(1), який описано у цьому підручнику. Найпростішим способом забезпечення виконання саме команди, яку описано на цій сторінці, є використання повного шляху для виклику команди. Приклад: /bin/kill --version

АВТОРИ

Початкову версію було запозичено з BSD 4.4.

ДИВ. ТАКОЖ

bash(1), tcsh(1), sigaction(2), kill(2), sigqueue(3), signal(7)

ЗВІТИ ПРО ВАДИ

Для звітування про вади використовуйте систему стеження помилками на

ДОСТУПНІСТЬ

kill є частиною пакунка util-linux, який можна отримати з

ПЕРЕКЛАД
Український переклад цієї сторінки посібника виконано Yuri Chornoivan <yurchor@ukr.net>

Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html). НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ.

Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: trans-uk@lists.fedoraproject.org.