linuxtm.ro

comenzi linux, tutoriale linux

18 June 2012

killall

by linuxtm

Termina procese dupa nume.

Sintaxa
killall [optiune(i)] [–] nume

killall -l

killall -V,–version

Optiuni:

-e
–exact
Cere o potrivire exacta pentru nume foarte lungi.
Daca numele unei comenzi este mail lunga de 15 caractere, numele intreg s-ar putea sa nu fie disponibil.
In acest caz, killall wa termina tot ce potriveste in cele 15 caractere. Cu optiunea -e , acest tip de intrari sunt omise.
killall afiseaza un mesah pentru fiecare intrare omisa daca optiunea -v este specificata in loce de -e

-g
–process-group
Termina grupul de care apartine un proces.
Semnalul kill este trimis o singura data pe grup chiar daca sunt mai multe procese care apartin aceluiasi grup de procese.

-I   Potriveste numele proceselor pentru a fi case insensitive.
–ignore-case

-i   Cere confirmare inainte de a termina procesul
–interactive

-l   Afiseaza toate numele semnalelor cunoscute.
–list

name Comanda / procesul ce trebuie terminat.

-q   Sa nu va mirati daca nu este terminat nici un proces
–quiet

-r  Interpreteaza un model de nume a proceselor ca si o expresie normala
–regexp

-s signal
–signal semnal
Trimite semnal in loc de SIGTERM-ul implicit. Ex: -9 = SIGKILL

-u user
–user utilizator

Termina doar procesele pe care userul dat le detine. Numele comenzilor este optional.

-v  Raporteaza daca semnalul a fost trimis cu succes.
–verbose

-V  Afiseaza informatii despre versiunea curenta.
–version

-w
–wait

Asteapta ca toate procesele terminate sa “moara”. killall verifica o data pe secunda daca un proces terminat inca exista si nu intoarce nimic daca nu a ramas nici unul.

Trebuie retinut ca, killall s-ar putea sa astepte la infinit daca semnalul a fost ignorat, daca nu a avut nici un efect sau daca procesul este zombie.

-Z pattern
–context pattern

killall trimite uns emnal tuturor proceselor ce ruleaza una din comenzile specificate. Daca nu este mentionat numele semnalului, este trimis SIGTERM.
Semnalele pot fi specificate fie dupa nume (ex: -HUP) fie dupa numar (ex: -1) fie dupa optiune -s.
Daca numele comenzi nu este o expresie regulata (optiune -r) si contine un slash (/), procesele care executa acel fisier vor fi selectate pentru terminare, indiferent de numele acestora.

killall intoarte un rezultat null daca cel putin a fost terminat pentru fiecare comanda listata, daca nici o comanda nu a fost listata si cel putin un proces a fost potrivit, atunci -u si -Z sunt utilizate ca si criteriu de cautare. Altfel, killall va intoarce un rezultat diferit de zero.

Un proces killall nu se termina nici odata pe el insusi (dar ar putea termina alte procese ale killall).

Semnale comune kill

Nume semnal Valoare semnal Efect
SIGHUP 1 Inchide
SIGINT 2 Intrerupt de tastatura
SIGKILL 9 Semnalul kill
SIGTERM 15 Semnal de terminare
SIGSTOP 17,19,23 Opreste procesul

Fisiere
/proc
locatia fisierelor de sistem proc

Bug-uri cunoscute

Daca rulam killall nume s-ar putea sa nu obtinem efectul dorit pe sisteme de operare non-Linux, in special cand aceasta este executata de un user cu permisiuni. De ex, Solaris va termina toate procesele active.
Terminarea dupa fisiere functioneaza doar cu executabilele care sunt tinute deschise in timpul executiei, de exemplu, executabilele impure nu pot fi terminate in acest mod.
killall -w nu va detecta daca un proces dispare si e inlocuit de un altul cu acelasi PID intre scanari
Daca procesele isi schimba numele, killall s-ar putea sa nu le potriveasca corect.

Exemple

Kill firefox:
$ killall -9 mozilla-bin

Kill php:
killall -9 php