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.
- SIGHUP
- SIGINT
- SIGQUIT
- SIGILL
- SIGTRAP
- SIGABRT
- SIGIOT
- SIGFPE
- SIGKILL
- SIGUSR1
- SIGSEGV
- SIGUSR2
- SIGPIPE
- SIGALRM
- SIGTERM
- SIGSTKFLT
- SIGCHLD
- SIGCONT
- SIGSTOP
- SIGSTP
- SIGTTIN
- SIGTTOU
- SIGURG
- SIGXCPU
- SIGXFSZ
- SIGVTALRM
- SIGPROF
- SIGWINCH
- SIGIO and SIGPOLL
- SIGPWR
- 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:
- None Found