Le utility pgrep
e pkill
sono state introdotte in Sun Solaris 7 e, come notato da g33klord , prendono uno schema come argomento che viene confrontato con i nomi dei processi in esecuzione. Mentre pgrep
stampa semplicemente un elenco di processi corrispondenti, pkill
invierà il segnale specificato (o SIGTERM
per impostazione predefinita) ai processi. Le opzioni e la semantica comuni tra pgrep
e pkill
sono utili quando vuoi stare attento e prima rivedere l'elenco con i processi di corrispondenza pgrep
, quindi procedere con la loro eliminazione pkill
. pgrep
e pkill
sono forniti dal le procps pacchetto, che fornisce anche altre /proc
utilità del file system, quali ps
, top
, free
, uptime
tra gli altri.
Il killall
comando è fornito dal pacchetto psmisc e differisce da pkill
quello, per impostazione predefinita, corrisponde esattamente al nome dell'argomento (fino ai primi 15 caratteri) quando si determinano i segnali a cui verranno inviati i segnali di processo. L' opzione -e
, --exact
può essere specificata per richiedere anche corrispondenze esatte per nomi più lunghi di 15 caratteri. Questo rende killall
un po 'più sicuro da usare rispetto a pkill
. Se l'argomento specificato contiene caratteri slash ( /
), l'argomento viene interpretato come un nome file e i processi che eseguono quel determinato file verranno selezionati come destinatari del segnale. killall
supporta anche espressione regolare corrispondenza dei nomi di processo, attraverso il -r
, --regexp
opzione.
Ci sono anche altre differenze. Il killall
comando, ad esempio, ha opzioni per abbinare i processi per età ( -o
, --older-than
e -y
, --younger-than
), mentre pkill
può essere detto di uccidere i processi solo su un terminale specifico (tramite l' -t
opzione). Chiaramente quindi, i due comandi hanno nicchie specifiche.
Si noti che il killall
comando su sistemi che discendono da Unix System V (in particolare Sun's Solaris , IBM AIX e HP-UX HP ) uccide tutti i processi avviabili da un determinato utente, arrestando efficacemente il sistema se eseguito da root.
Le utility psmisc di Linux sono state portate su BSD (e in estensione Mac OS X ), quindi killall
segue la semantica "uccidi i processi per nome".