KILL(1) Comenzi utilizator KILL(1)

kill - termină un proces

kill [-semnal|-s semnal|-p] [-q valoare] [-a] [--timeout milisecunde semnal] [--] pid|nume...

kill -l [număr|0xmască-semnal] | -L

kill -d pid

Comanda kill trimite semnalul specificat către procesele sau grupurile de procese specificate.

Dacă nu se specifică niciun semnal, se trimite semnalul TERM. Acțiunea implicită pentru acest semnal este de a încheia procesul. Acest semnal ar trebui utilizat de preferință față de semnalul KILL (numărul 9), deoarece un proces poate instala un gestionar pentru semnalul TERM pentru a efectua pași de curățare înainte de a se încheia în mod ordonat. În cazul în care un proces nu se termină după ce a fost trimis un semnal TERM, atunci se poate utiliza semnalul KILL; rețineți că acest din urmă semnal nu poate fi capturat și, prin urmare, nu oferă procesului țintă posibilitatea de a efectua o curățare înainte de a se termina.

Majoritatea shell-urilor moderne au o comandă kill încorporată, cu o utilizare destul de asemănătoare cu cea a comenzii descrise aici. Opțiunile --all, --pid și --queue, precum și posibilitatea de a specifica procesele după numele comenzii sunt extensii locale.

Dacă semnalul este 0, atunci nu se trimite niciun semnal real, dar se efectuează în continuare verificarea erorilor.

Lista de procese care trebuie semnalate poate fi un amestec de nume și PID-uri.

pid

Fiecare pid poate fi exprimat într-unul din următoarele moduri:

n

unde n este mai mare decât 0. Procesul cu PID n este semnalat.

0

Sunt semnalate toate procesele din grupul de procese curent.

-1

Toate procesele cu un PID mai mare de 1 sunt semnalate.

-n

unde n este mai mare decât 1. Toate procesele din grupul de procese n sunt semnalate. Atunci când se dă un argument de forma „-n” și acesta trebuie să indice un grup de procese, fie trebuie specificat mai întâi un semnal, fie argumentul trebuie să fie precedat de opțiunea „--”, altfel acesta va fi considerat ca fiind semnalul de trimis.

nume

Toate procesele invocate folosind acest nume vor fi semnalate.

-s, --signal semnal

Semnalul care trebuie trimis. Acesta poate fi dat sub forma unui nume sau a unui număr.

-l, --list [număr|0xmască-semnal]

Afișează o listă de nume de semnale, convertește numărul semnalului dat într-un nume sau convertește masca semnalului dat în nume. Semnalele pot fi găsite în /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

Similar cu -l, dar va afișa numele semnalelor și numerele lor corespunzătoare.

-a, --all

Nu se restricționează conversia numelui comenzii la PID, la procesele cu același UID ca și procesul actual.

-p, --pid

Afișează doar ID-ul de proces (PID) al proceselor numite, nu trimite niciun semnal.

-r, --require-handler

Nu se trimite semnalul dacă acesta nu este captat în spațiul utilizatorului de către procesul semnalat.

--verbose

Afișează PID-ul (PID-urile) care va (vor) fi semnalat(e) cu kill împreună cu semnalul.

-q, --queue valoare

Trimite semnalul folosind sigqueue(3) în loc de kill(2). Argumentul valoare este un număr întreg care este trimis împreună cu semnalul. În cazul în care procesul de recepție a instalat un gestionar pentru acest semnal utilizând fanionul SA_SIGINFO la sigaction(2), atunci acesta poate obține aceste date prin intermediul câmpului si_sigval al structurii siginfo_t.

--timeout milisecunde semnal

Trimite un semnal definit în mod obișnuit către un proces, urmat de un semnal suplimentar după o întârziere specificată. Opțiunea --timeout face ca kill să aștepte o perioadă definită în milisecunde înainte de a trimite un semnal suplimentar către proces. Această caracteristică este implementată folosind caracteristica descriptorului de fișiere PID din nucleul Linux pentru a garanta că semnalul de urmărire este trimis aceluiași proces sau că nu este trimis dacă procesul nu mai există.

Rețineți că sistemul de operare poate reutiliza PID-urile, iar implementarea unei funcții echivalente într-un shell care utilizează kill și sleep ar fi supusă unor situații în care semnalul de urmărire ar putea fi trimis către un proces diferit care utilizează un PID reciclat.

Opțiunea --timeout poate fi specificată de mai multe ori: semnalele sunt trimise secvențial cu temporizările specificate. Opțiunea --timeout poate fi combinată cu opțiunea --queue.

Ca exemplu, următoarea comandă trimite semnalele QUIT, TERM și KILL în succesiune și așteaptă 1000 de milisecunde între trimiterea semnalelor:

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

-d, --show-process-state pid

Decodifică câmpurile referitoare la semnal în /proc/pid/status.
$ kill -d $$
Blocked: INT
Ignored: TERM TSTP TTIN TTOU
Caught: HUP INT PIPE ALRM CHLD WINCH

kill are următoarele valori de stare de ieșire:

0

succes

1

eșec

64

succes parțial (în cazul în care sunt specificate mai multe procese)

Deși este posibil să se specifice TID (ID-ul firului de execuție, a se vedea gettid(2)) al unuia dintre firele dintr-un proces cu mai multe fire ca argument pentru kill, semnalul este totuși direcționat către proces (adică către întregul grup de fire). Cu alte cuvinte, nu este posibil să se trimită un semnal către un fir selectat în mod explicit într-un proces cu mai multe fire. Semnalul va fi transmis unui fir selectat în mod arbitrar în procesul țintă care nu blochează semnalul. Pentru mai multe detalii, a se vedea signal(7) și descrierea CLONE_THREAD din clone(2).

Diferite shell-uri oferă o comandă kill încorporată care este preferată în raport cu executabilul kill(1) descris în acest manual. Cel mai simplu mod de a vă asigura că se execută comanda descrisă în această pagină este să utilizați ruta completă atunci când apelați comanda, de exemplu: /bin/kill -versiunea

Salvatore Valente <svalente@mit.edu>, Karel Zak <kzak@redhat.com>

Versiunea originală a fost preluată din BSD 4.4.

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

Pentru rapoarte de eroare, folosiți sistemul de urmărire al erorilor https://github.com/util-linux/util-linux/issues.

Comanda kill face parte din pachetul util-linux care poate fi descărcat de la Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2025-03-29 util-linux 2.41