Kill comanda în unix

Kill comanda în unix

Comanda kill în Unix / Linux

Semnalele sunt întreruperi software. Ele sunt utilizate pentru comunicarea între procese pe sisteme de operare UNIX și UNIX, cum ar fi Linux, Mac OS.







Au fost folosite semnale de la Bell Labs UNIX în 1970 și astăzi este definită oficial de standardul POSIX. Când un semnal ajunge la un proces, sistemul de operare întrerupe fluxul normal al procesului și oferă notificări.

Nu contează ce sistem de operare utilizați, veți întâlni, fără îndoială, că aplicațiile dvs. sunt blocate și refuză să funcționeze corect. În Unix, Linux, există o comandă "kill" pe care o puteți folosi pentru a opri procesul imediat, dar nu numai, dar o să vorbesc puțin mai târziu. În acest articol, "Comanda de ucidere în Unix / Linux" voi spune și arăta pe exemplele finite diferitele comenzi ale utilității kill.

Omoară comenzi și semnale

Când executați comanda "kill", trimiteți, de fapt, un semnal sistemului și instruiți-vă să întrerupeți activitatea robotilor de aplicație incorectă. Există un număr total de 60 de semnale pe care le puteți utiliza, însă tot ce trebuie să știți este SIGTERM (15) și SIGKILL (9).

Kill comanda în unix

ucizi-l pe Debian

Voi încerca să vorbesc despre toate semnalele, dar, încă de la început, vom vorbi doar despre cele mai importante și adesea folosite.

Semnale de bază

Următoarele semnale fac parte din standardul POSIX. Fiecare semnal este o macro definită în Fișier antet sistem. Acestea sunt, de regulă, abreviate, fără prefixul lor SIG; de exemplu, SIGHUP este adesea denumită pur și simplu ca HUP.

SIGTERM - Acest semnal solicită stoparea procesului care rulează. Acest semnal poate fi ignorat. Procesul are timp să se oprească bine. Când programul este oprit bine, înseamnă că i se dă timp pentru a-și salva progresul și resursele libere. Cu alte cuvinte, nu este o încetare "forțată" a procesului.

SIGKILL - semnalul SIGKILL determină ca procesul să nu mai funcționeze imediat. Programul nu poate ignora acest semnal. Progresele nesalvate vor fi pierdute.

Sintaxa de comandă este:

Semnalele deosebit de utile includ HUP, INT, kill, STOP, CONT și 0.

-s signal_name
Numele simbolic al semnalului care specifică semnalul pentru a trimite semnalul nu este implicit.

-l [exit_status]
Dacă operanzul nu este specificat, afișați numele semnalului; În caz contrar, scrieți numele semnalului corespunzător exit_status.

-signal_name
Numele simbolic al semnalului care specifică semnalul pentru a trimite la TERM implicit.

-signal_number
Un număr întreg zecimal negativ care specifică semnalul de trimis la TERM în mod implicit.

Următoarele PID-uri au o importanță deosebită:
-1 În cazul în care superuser, apoi traduce semnalul la toate procesele; în caz contrar se transmite la toate procesele din partea de jos-
pentru utilizatori.

Unele dintre cele mai frecvent utilizate semnale sunt:

  • 1 HUP (închideți) - agățați.
  • 2 INT (întrerupere) - o întrerupere.
  • 3 QUIT (quit) - ieșire.
  • 6 ABRT (întrerupere) - întrerupe.
  • 9 KILL (ucidere care nu poate fi surprinsă, nu poate fi ignorată)
  • 14 ALRM (ceas cu alarmă) - ceas cu alarmă.
  • 15 TERM (semnal de terminare a software-ului) - Software pentru terminarea unui semnal.

Comanda "pkill" vă permite să utilizați modele de expresie regulată extinsă și alte criterii de potrivire. În loc să utilizați PID-ul, puteți omorâ aplicația introducând numele procesului. De exemplu, pentru a ucide browser-ul Firefox. rulați comanda:

Xkill este o modalitate grafică de a "ucide" o aplicație. Când introduceți "XKill" în terminal, cursorul mouse-ului va deveni imediat o "cruce". Tot ce trebuie să faceți este să faceți clic pe "cruce" pe aplicația de vinovat și va ucide aplicația instantaneu. Dacă sunteți interesat, puteți adăuga o scurtătură pentru a activa funcția XKill.

Mai multe semnale care sunt utilizate

Acest semnal trimite un semnal către proces pentru a întrerupe operația. ABRT este, de obicei, direcționat către procesul propriu-zis, atunci când acesta numește funcția abort () a limbajului de programare C pentru a semnala o terminare anormală, dar poate fi trimisă din orice proces, ca orice alt semnal.







SIGALRM, SIGVTALRM și SIGPROF

ALRM, VTALRM și / sau semnalul PROF este trimis la proces când expiră limita de timp specificată la apelarea funcției de alarmă (de exemplu setitimer).

Este trimis în momentul de față sau în timpul prezent, cu trecerea timpului.

Se trimite când expiră timpul procesorului utilizat în proces.

Este trimis atunci când timpul procesorului folosit de proces și sistemul expiră în numele procesului.

Semnalul CHLD este trimis în proces atunci când procesul copilului este întrerupt, întrerupt sau reluat după întrerupere. O utilizare obișnuită a semnalului este de a da semnalul OS pentru a curăța resursele care sunt utilizate în procesul copilului după terminarea lui fără un apel sistem explicit.

Semnalul CONT instruiește sistemul de operare și oferă un semnal pentru a reporni procesul care a fost suspendat anterior în modul STOP sau TSTP. Una dintre caracteristicile importante ale acestui semnal este controlul muncii în shell-ul Unix.

Semnalul FPE este trimis la proces când efectuează operații aritmetice eronate, de exemplu, cum ar fi împărțirea la zero.

Semnalul HUP este trimis la proces când terminalul său de comandă este închis. Inițial, a fost proiectat pentru a notifica procesul după o cădere consecventă a liniei (HUP responsabilă de "suspendarea"). În sistemele moderne, acest semnal înseamnă de obicei închiderea controlului terminalului pseudo sau virtual.

Semnalul ILL trimis la proces când încercați să executați comenzi (instrucțiuni) rău intenționate, necunoscute sau privilegiate.

Semnalul INT este trimis la proces de la terminalul de comandă atunci când utilizatorul dorește să întrerupă procesul. Aceasta este de obicei inițiată prin apăsarea butonului Control-C, dar pe unele sisteme, "delete" sau "break".

Semnalul KILL trimite procesul să se oprească imediat. Spre deosebire de SIGTERM și SIGINT, acest semnal nu poate fi capturat sau ignorat, iar procesul de recepție nu poate efectua nici o curățare după primirea acestui semnal.

Semnalul PIPE este trimis la proces atunci când încearcă să scrie în conductă fără un proces conectat la celălalt capăt.

Semnalul QUIT este trimis la proces de la terminalul său de comandă atunci când utilizatorul solicită un proces de descărcare.

Semnalul SEGV este trimis la proces atunci când produce o legătură de memorie virtuală nevalidă sau un defect de segmentare, adică atunci când efectuează o încălcare a segmentării.

Semnalul STOP indică ca sistemul de operare să oprească procesul pentru reluarea ulterioară.

Semnalul TERM este trimis procesului pentru a cere terminarea lui. Spre deosebire de semnalul "kill", acesta poate fi interpretat sau ignorat în cadrul procesului. Acest lucru permite procesului să execute execuția "drăguță" pentru a opri eliberarea resurselor și pentru a salva starea, dacă este necesar. Trebuie remarcat faptul că SIGINT este aproape identic cu SIGTERM.

Semnalul TSTP este trimis la procesul terminalului său de control și îi spune ce trebuie suspendat temporar. Aceasta este de obicei inițiată de utilizator prin apăsarea butonului Control-Z. Spre deosebire de SIGSTOP, acest proces poate înregistra un handler de semnal sau poate ignora un semnal.

În TTIN și TTOU, semnalele sunt trimise procesului atunci când încearcă să citească sau să scrie, respectiv, de la (tty) terminalul din fundal. Ca regulă, acest semnal poate fi obținut numai prin procese ale panoului de control sub control; demonii nu au terminale de control și nu ar trebui să primească niciodată acest semnal.

Semnalele USR1 și USR2 sunt trimise la proces și indică condițiile definite de utilizator.

Semnalul POLL este trimis în proces când are loc un eveniment I / O asincron.

Semnalul SYS este trimis în proces când trece un argument rău la apelul de sistem.

Semnalul TRAP este trimis la proces atunci când apare o condiție că debuggerul a cerut să fie informat - De exemplu, atunci când o anumită funcție rulează sau când o anumită valoare a unei variabile se modifică.

Semnalul URG este trimis la proces când soclul are o informație urgentă sau în afara domeniului care poate fi citită.

Semnalul XCPU este trimis în proces când utilizează procesorul central pentru o perioadă care depășește o anumită valoare predeterminată stabilită de utilizator. Sosirea semnalului XCPU permite procesului să salveze rapid toate rezultatele intermediare și să se finalizeze bine înainte de a fi terminat de sistemul de operare utilizând semnalul SIGKILL.

Semnalul XFSZ este trimis în proces atunci când fișierul crește (depășește valoarea specificată) decât valoarea maximă admisă.

SIGRTMIN la SIGRTMAX

Semnalele RTMIN-RTMAX sunt destinate utilizării în aplicațiile definite de utilizator. Ele sunt semnale în timp real.

Diferite semnale

Următoarele semnale nu sunt standardizate de POSIX, dar sunt uneori utilizate pe unele sisteme.

Semnalul EMT este trimis în proces atunci când emulatorul este întrerupt.

Semnalul INFO este trimis în proces atunci când cererea de stare este recepționată de la terminalul de comandă.

Semnalul PWR este trimis în proces când sistemul suferă o întrerupere a alimentării.

Semnalul LOST este trimis la proces când se pierde "blocarea fișierelor".

Semnalul WINCH este trimis în proces atunci când terminalul său de control își schimbă dimensiunea.

Trimiterea semnalelor de pe tastatură

Semnalele pot fi trimise de la tastatură. Câteva valori implicite standard sunt enumerate mai jos. În mod implicit, tastele rapide pentru trimiterea semnalelor de întrerupere pot fi definite utilizând comanda stty.

Trimiteți SIGINT (întrerupere). În mod implicit, acest lucru determină încetarea procesului.

Trimiteți SIGTSTP (Suspendare). În mod implicit, acest lucru determină procesul să întrerupă toate operațiile.

Trimiteți SIGQUIT (Quit). În mod implicit, acest lucru face ca procesul să se oprească imediat și să resetați kernelul.

Trimiteți SIGINFO (INFO). În mod implicit, acest lucru determină sistemul de operare să afișeze informații despre comandă. Nu este acceptat pe toate sistemele.

Atunci când aplicațiile se comportă incorect și cauzează blocarea sistemului, este foarte tentant să reporniți computerul și să porniți sesiunea din nou și din nou. Cu aceste comenzi "kill", puteți gestiona mai bine comportamentul rău al aplicațiilor care provoacă sau pot provoca un accident de sistem. În acest sens, termin acest subiect "Comandă Kill în Unix / Linux".







Trimiteți-le prietenilor: