KILL(1)

NUME
kill - termină un proces

REZUMAT

kill [-signal|-s signal|-p] [-q value] [-a] [--timeout milliseconds signal] [--] pid|pid:_pidfd_inode_|name...

kill [-signal|-s signal] pid|pid:_pidfd_inode_...

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

kill -d pid

DESCRIERE

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.

ARGUMENTE

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.

pid:_pidfd_inode_
    A process can be referenced by its pid plus pidfd_inode (pid:pidfd_inode), to uniquely identify it and perform race-free signalling. This works only for the options -s, --signal and -signal. Requires kernel version 6.9 and later.

nume
    Toate procesele invocate folosind acest nume vor fi semnalate.

OPȚIUNI

-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

    If neither NUMBER nor 0xSIGMASK is given, list all signal names. In that case, print one signal per line when the output is not a terminal.

-L, --table
    Similar to -l, but it will print signal names and their corresponding numbers. Print one signal per line when the output is not a terminal.

-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

-h, --help
    Afișează acest mesaj de ajutor și iese.

-V, --version
    Afișează versiunea și iese.

STARE DE IEȘIRE

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)

NOTE

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

AUTORI

Versiunea originală a fost preluată din BSD 4.4.

CONSULTAȚI ȘI

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

RAPORTAREA ERORILOR

Pentru rapoarte de eroare, folosiți

DISPONIBILITATE

Comanda kill face parte din pachetul util-linux care poate fi descărcat de la