ucide (Unix)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică ucide (din limba engleză pentru a ucide, pentru a ucide) este o comanda de Unix si Unix- ului de operare sisteme , și mai general a POSIX sistemelor [1] , care trimite un semnal de la una sau mai multe procese de obicei , pentru a cauzează încetarea acestora (așa cum sugerează și numele) sau afișează informații despre semnale.

kill este, de asemenea, numele unui apel de sistem definit de standardul POSIX [2] care trimite un semnal către un proces. De fapt, comanda kill acționează prin invocarea apelului de sistem cu același nume.

Comanda kill

Sintaxa generală a comenzii kill are două forme: una pentru a trimite un semnal la unul sau mai multe procese, iar cealaltă pentru a obține informații despre semnale.

Trimiterea semnalelor

Sintaxa în acest caz este:

 ucide [ opțiuni ] [-] arg1 [ arg2 ...]

Parametrii arg identifică procesele către care trebuie trimise semnale, care pot fi specificate în următoarele două moduri:

  • din PID-uri , conform acelorași convenții ale apelului de sistem cu același nume (pentru care este, de asemenea, posibil să se specifice 0 sau -1 sau valori mai mici);
  • a ID-urilor de job shell , conform următoarei sintaxi:
    • %% sau %+ : indică jobul curent;
    • %- : indică jobul anterior;
    • % n : indică lucrarea cu identificatorul n ;
    • % stringa : indică lucrarea a cărei linie de comandă începe cu șir ;
    • %? stringa : indică lucrarea a cărei linie de comandă conține șir .

Linia dublă - (opțional) indică faptul că următorii parametri nu trebuie considerați opțiuni.

Comportamentul implicit este de a trimite semnalul SIGTERM .

Opțiunile includ:

semnal -s
Trimiteți semnalul specificat în loc de SIGTERM . Parametrul semnalului poate fi specificat atât sub formă simbolică, cu sau fără prefixul "SIG", cât și sub formă numerică și poate fi de asemenea 0 pentru a verifica doar posibilitatea de a trimite semnale
- semnal
Echivalent cu utilizarea semnalului -s (sintaxă tradițională).

De exemplu, " kill -s SIGKILL 1234 ", " kill -9 1234 " și " kill -KILL 1234 " sunt echivalente unul cu celălalt.

Informații despre semnale

Sintaxa în acest caz este:

 ucide -l [ valoare ]

Valoarea parametrului opțional poate indica:

  • numărul unui semnal, caz în care numele semnalului este scris pe ieșirea standard fără prefixul "SIG";
  • valoarea de ieșire a unei comenzi care sa încheiat datorită recepționării unui semnal, cum ar fi obținută din variabila specială " $? " a shell-ului de text , caz în care numele este scris în ieșirea standard (fără prefixul "SIG ") a semnalului care a determinat terminarea comenzii.
    Rețineți că nu este corect să specificați nicio valoare de ieșire, dar asigurați-vă mai întâi că terminarea se datorează unui semnal (de obicei, în acest caz, valoarea de ieșire este mai mare de 128).

Dacă parametrul valorii nu este specificat, o listă de semnale cunoscute sistemului este produsă pe ieșirea standard .

Exemple

Trimiteți semnalul SIGTERM proceselor cu PID 1234 și 5689:

 ucide 1234 5689

Trimiteți semnalul SIGKILL la proces 1234:

 ucide -s SIGKILL 1234

Trimiteți semnalul SIGKILL la proces 1234:

 ucide -OMOI 1234

Trimiteți semnalul SIGKILL la proces 1234:

 ucide -9 1234

Enumerați semnalele disponibile:

 ucide -l

Trimite semnalul SIGTERM proceselor curente de lucru ale shell-ului (de obicei ultimul început):

 ucide %%

Trimite semnalul SIGTERM la procesele de coajă numărul de locuri de muncă 5:

 ucide% 5

Alternative

În unele sisteme de operare Unix și Unix, sunt disponibile și comenzile killall și pkill , care trimit un semnal către toate procesele care îndeplinesc criteriile de căutare specificate ca parametri. Cu aceste comenzi, de exemplu, este posibil să trimiteți un semnal către toate procesele unui anumit utilizator sau către toți cei al căror nume conține un șir specificat.

Apelul sistemului de ucidere

Apelul de sistem kill este declarat în fișierul de antet signal.h :

 #include <signal.h>
int kill ( pid_t pid , int sig );

Înainte de a trimite semnalul, acesta verifică dacă apelantul are permisiunea de a trimite semnale către procesul sau grupul de procese specificat.

Tipul pid_t este un tip opac care reprezintă un PID și care poate presupune, de asemenea, o valoare egală sau mai mică decât zero.

Parametrul pid indică procesul sau grupul de procese pentru a trimite semnalul către:

  • dacă este mai mare de 0, semnalul specificat de sig este trimis procesului având PID specificat;
  • dacă este egal cu 0, semnalul specificat de sig este trimis la toate procesele din grupul de procese din care face parte apelantul;
  • dacă este egal cu -1, semnalul specificat de sig este trimis către toate procesele din sistem către care apelantul are voie să trimită semnale, cu excepția unui set restrâns de procese care depinde de implementare (de obicei init );
  • dacă este mai mic de -1, semnalul specificat de sig va fi trimis tuturor proceselor aparținând grupului de procese identificat prin valoarea absolută a pid .

Parametrul sig indică semnalul de trimis; constantele care identifică semnalele sunt listate în fișierul antet signal.h . Dacă este 0, nu se trimite semnal, apare doar posibilitatea de a trimite semnale către procesul specificat sau grupul de procese.

Valoare returnată

Dacă reușește, valoarea 0 este returnată, altfel valoarea -1 este returnată și variabila errno indică eroarea specifică.

Erori

Când kill revine -1, errno poate fi:

  • EINVAL - sig nu este un număr de semnal valid.
  • EPERM - Apelantul nu are voie să trimită semnal sig către procesul sau grupul de procese identificate prin pid .
  • ESRCH - Nu există nici un proces sau grup de procese ce corespund BIP specificat.

Notă

  1. ^ (EN) kill (utilități) , în The Open Group Base Specifications Issue 7 IEEE Std 1003.1-2008. Adus 14/06/2009 .
  2. ^ (EN) kill (funcții) , în The Open Group Base Specifications Issue 7 IEEE Std 1003.1-2008. Adus 14/06/2009 .

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT