Il kill
comando è un wrapper molto semplice per il kill
chiamata di sistema , che conosce solo gli ID di processo (PID). pkill
e killall
sono anche wrapper per il kill
chiamata di sistema , (in realtà, alla libreria libc che richiama direttamente la chiamata di sistema), ma può determinare i PID per te, in base a cose come nome del processo, proprietario del processo, ID di sessione, ecc.
Come pkill
e killall
il lavoro può essere visto usando ltrace
o strace
su di essi. Su Linux, entrambi leggono il /proc
filesystem, e per ogni pid (directory) trovato, attraversa il percorso in modo da identificare un processo con il suo nome o altri attributi. Il modo in cui ciò viene fatto è tecnicamente parlando, specifico del kernel e del sistema. In generale, leggono da /proc/<PID>/stat
che contiene il nome del comando come secondo campo. Per pkill -f
e pgrep
esamina il /cmdline
voce per ogni voce proc di PID.
pkill
e pgrep
usa il readproc
chiamata di sistema, mentre killall
non. Non saprei dire se c'è una differenza di prestazioni:dovrai confrontarla da solo.
kill e killall sono strumenti che forniscono un modo per terminare un processo. Il primo tramite il suo PID, il secondo tramite il suo nome.pgrep (lista) e pkill (kill per impostazione predefinita) sono strumenti che forniscono un modo per inviare un messaggio a un processo tramite il suo nome o altri attributi vedi:http://linux.die. net/man/1/pkillPer maggiori informazioni sui segnali:http://linux.die.net/man/7/signal