Feb 192014
 

Articolo originale di http://blog.shineservers.com/

A volte un processo va in “blocco” sia se si utilizza GNU/Linux sul desktop (forse un gioco?) o da server, in questi casi la cosa migliore da fare è di interrompere quel processo, che probabilmente sta utilizzando risorse preziose, i comandi di base per farlo da terminale sono kill e killall .

killall è uno strumento per porre fine ai processi in esecuzione sul vostro sistema in base al nome. Al contrario, kill termina i processi basandosi sul processo numero ID o “PID”. kill e killall possono anche inviare segnali di sistema specifici ai processi. Utilizzare killall e kill , in combinazione con altri strumenti tra cui ps che serve a gestire i processi e terminarli quando si bloccano o non rispondono più.

Uso

killall

Il comando killall và utilizzato nel seguente modo:

killall [nome del processo]
Sostituire “[nome del processo]” con il nome di qualsiasi processo che si desidera terminare. killall termina tutti i programmi che corrispondono al nome specificato. Senza argomenti, killall invia “SIGTERM”, o il segnale 15, che termina i processi in esecuzione che corrispondono al nome specificato. È possibile specificare un segnale diverso usando l’opzione “-s” come segue:

killall-s 9 [nome del processo]
Questo invia il segnale “SIGKILL”, che è più efficace nell’uccidere alcuni processi particolarmente “indisciplinati”. È inoltre possibile specificare i segnali in uno dei seguenti formati:

killall -KILL [nome del processo]
killall-SIGKILL [nome del processo]
killall -9 [nome del processo]

Il gruppo di comandi appena mostrati sono equivalenti.

Kill

Il comando kill termina singoli processi, come specificato dai loro numeri ID di processo o PID assume la forma seguente:

kill [PID]

Questo invia “SIGTERM” al PID specificato. È possibile specificare più PID sulla riga di comando per terminare i processi con “kill”. Si può anche inviare segnali di sistema alternativi con kill. I seguenti esempiinviano tutti il segnale “SIGKILL” per il PID specificato:

kill -s KILL [PID] 
kill -KILL [PID]

Segnali di sistema

E’ possibile utilizzare kill e killall per mandare i seguenti segnali.

  1. SIGHUP
  2. SIGINT
  3. SIGQUIT
  4. SIGILL
  5. SIGTRAP
  6. SIGABRT
  7. SIGIOT
  8. SIGFPE
  9. SIGKILL
  10. SIGUSR1
  11. SIGSEGV
  12. SIGUSR2
  13. SIGPIPE
  14. SIGALRM
  15. SIGTERM
  16. SIGSTKFLT
  17. SIGCHLD
  18. SIGCONT
  19. SIGSTOP
  20. SIGSTP
  21. SIGTTIN
  22. SIGTTOU
  23. SIGURG
  24. SIGXCPU
  25. SIGXFSZ
  26. SIGVTALRM
  27. SIGPROF
  28. SIGWINCH
  29. SIGIO and SIGPOLL
  30. SIGPWR
  31. SIGSYS

E’ possibile date uno dei seguenti comandi per avere una lista dei segnali disponibili:

kill -l
killall -l

Se si desidera convertire il nome di un segnale in un numero o un numero di segnale in un nome di segnale considerare i seguenti esempi:

$ kill -l 9
KILL

$ kill -l kill 
9

Trovare i processi attivi

E’ possibile utilizzare programmi come htop o “top` per visualizzare un elenco reale tempo dei processi e il loro consumo di risorse di sistema. È inoltre possibile utilizzare il comando ps per visualizzare i processi attualmente in esecuzione ed i loro PID.

$ ps aux | grep "emacs"
squire  3896  0.0  2.2  56600 44468 ?        Ss   Sep30   4:29 emacs
squire 22843  0.0  0.0   3900   840 pts/11   S+   08:49   0:00 grep emacs

Questo comando filtra l’elenco di tutti i processi attualmente in esecuzione cercando la stringa  “emacs” usando grep. Il numero indicato nella seconda colonna è il PID, che è 3896 nel caso del processo “emacs”. Il processo grep torna sempre se stesso con una ricerca semplice, come nel secondo risultato. Per visualizzare una struttura gerarchica di tutti i processi in esecuzione, eseguire il seguente comando:

ps auxf

Dopo aver ottenuto il PID o il nome del processo, usare killall o kill per terminare il processo di cui sopra.

Verificare la fine di un processo

L’opzione “-w” per le cause di comando killall killall attendere il processo termina prima di uscire. Si consideri il seguente comando:

killall -w irssi

Questo comando dà il segnale di sistema “SIGTERM” al processo con un nome che corrisponde a “irssi”. “Killall” attenderà fino a quando i processi corrispondenti sono finiti. Se nessun processo corrisponde al nome specificato, killall restituisce un messaggio di errore, come di seguito:

killall -w irssi
irssi: no process found



Popular Posts:

flattr this!

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>