KILL(1) Корисничке наредбе KILL(1)

НАЗИВ

kill - окончава процес

УВОД

kill [-сигнал|-s сигнал|-p] [-q вредност] [-a] [--timeout милисекунде сигнал] [--] пид|назив...

kill -l [number|0xsigmask] | -L

kill -d pid

ОПИС

Наредба kill шаље наведени сигнал наведним процесима или групама процеса.

Ако није наведен никакав сигнал, TERM сигнал се шаље. Основна радња за овај сигнал је да оконча процес. Овај сигнал треба да се користи у предности над KILL сигналом (број 9), како процес може да инсталира руковаоца за TERM сигнал да би обавио кораке чишћења пре окончавања на старији начин. Ако се процес не оконча након што је TERM сигнал послат, тада се сигнал KILL може користити; пазите да каснији сигнал не може бити ухваћен, и стога не даје циљном процесу могућност да обави никакво чишћење пре окончавања.

Већина савремених шкољки има уграђену наредбу kill, са коришћењем врло сличном оном наредби описаној овде. Опције --all, --pid, и --queue, и могућност за навођење процеса по називу наредбе, јесу локална проширења.

Ако је сигнал 0, тада се никакав актуелни сигнал не шаље, али се провера грешке још увек обавља.

АРГУМЕНТИ

Списак процеса који ће бити сигнализирани може бити мешавина назива и ПИД-ова.

пид

Сваки пид се може изразити на један од следећих начина:

n

где је n веће од 0. Процес са ПИД-ом n се сигнализира.

0

Сви процеси у тренутној групи процеса се сигнализирају.

-1

Сви процеси са ПИД-ом већим о д1 се сигнализирају.

-n

где је n веће од 1. Сви процеси у процесној групи n су сигнализовани. Када је дат аргумент у облику „-n“, и замишљен је да означи процесну групу, или сигнал мора бити наведен први, или испред аргумента мора да претходи опција „--“, у супротном биће узет као сигнал за слање.

назив

Сви процеси призвани коришћењем овог назива биће сигнализирани.

ОПЦИЈЕ

-s, --signal сигнал

Сигнал за слање. Може бити дат као назив или број.

-l, --list [number|0xsigmask]

Print a list of signal names, convert the given signal number to a name, or convert the given signal mask to names. The signals can be found in /usr/include/linux/signal.h.
$ 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

Слично као -l, али ће исписати називе сигнала и њихове одговарајуће бројеве.

-a, --all

Не ограничава претварање назив-наредбе-у-ПИД на процесе са истим УИД-ом као садашњим процесом.

-p, --pid

Само исписује ИД процеса (ПИД) именованих процеса, не шаље никакве сигнале.

-r, --require-handler

Не шаље сигнал ако није ухваћен у корисничком простору сигнализираним процесом.

--verbose

Исписује ПИД(ове) који ће бити сигнализирани са kill уз сигнал.

-q, --queue вредност

Шаље сигнал користећи sigqueue(3) уместо kill(2). Аргумент вредност је цео број који се шаље са сигналом. Ако је процес примања инсталирао руковаоца за овај сигнал користећи опцију SA_SIGINFO за sigaction(2), тада може да прибави ове податке путем поља si_sigval структуре siginfo_t.

--timeout милисекунде сигнал

Шаље процесу сигнал дефинисан на уобичајени начин, за којим следи додатни сигнал након наведеног застоја. Опција --timeout доводи до тога да kill чека на период дефинисан у милисекундама пре слања сигнала праћења процесу. Ова функција је примењена коришћењем функције описника ПИД датотеке Линукс кернела да би осигурао да је сигнал праћења послат истом процесу или није послат ако процес више не постоји.

Знајте да оперативни систем може поново да искористи ПИД-ове и да би примена еквивалентне функције у шкољци коришћењем kill-а и sleep-а била подложна утркивањима у којима би сигнал праћења могао бити послат другом процесу који је користио рециклирани ПИД.

Опција --timeout се може навести више пута: сигнали се шаљу у секвенцама са наведеним истецима времена. Опција --timeout се може комбиновати са опцијом --queue.

На пример, следећа наредба шаље сигнале QUIT, TERM и KILL у секвенцама и чека 1000 милисекунди између слања сигнала:

kill --verbose --timeout 1000 ТЕРМ --timeout 1000 УБИЈ \
        --signal ИЗАЂИ 12345

-d, --show-process-state pid

Decode signal related fields in /proc/pid/status.
$ kill -d $$
Blocked: INT
Ignored: TERM TSTP TTIN TTOU
Caught: HUP INT PIPE ALRM CHLD WINCH

ИЗЛАЗНО СТАЊЕ

kill има следеће вредности излазног стања:

0

успешно

1

неуспех

64

делимичан успех (када је наведено више од једног процеса)

БЕЛЕШКЕ

Иако је могуће навести ТИД (ИД нити, видите gettid(2)) једне од нити у вишенитном процесу као аргумент kill-а, сигнал се ипак усмерава на процес (тј. целој групи нити). Другим речима, није могуће послати сигнал изричито одабраној нити у вишенитном процесу. Сигнал ће бити испоручен произвољно одабраној нити у циљном процесу која не блокира сигнал. За више детаља, видите 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)

ПРИЈАВЉИВАЊЕ ГРЕШАКА

For bug reports, use the issue tracker https://github.com/util-linux/util-linux/issues.

ДОСТУПНОСТ

Наредба kill је део пакета „util-linux“ који се може преузети са Архиве Линукс кернела https://www.kernel.org/pub/linux/utils/util-linux/.

2025-03-29 util-linux 2.41