GNU/Linux >> Linux Esercitazione >  >> Linux

La differenza tra Kill, Pkill e Killall?

Conosco kill command , e la maggior parte delle volte usiamo semplicemente kill -9 per terminare un processo con forza, ci sono molti altri segnali che possono essere usati con kill . Ma mi chiedo quali sono i casi d'uso di pkill e killall , se esiste già un comando kill.

Esegui pkill e killall usa il kill comando nella loro attuazione? Voglio dire, sono solo wrapper su kill o hanno una propria implementazione?

Vorrei anche sapere come pgrep comando ottiene l'id del processo dal nome del processo.

Tutti questi comandi utilizzano le stesse chiamate di sistema sottostanti? C'è qualche differenza dal punto di vista delle prestazioni, quale è più veloce?

Risposta accettata:

L'kill command è un wrapper molto semplice per kill chiamata di sistema , che conosce solo gli ID di processo (PID). pkill e killall sono anche wrapper per 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 il nome del processo, il proprietario del processo, l'id di sessione, ecc.

Come pkill e killall il lavoro può essere visto usando ltrace o strace su di essi. Su Linux, entrambi leggono /proc filesystem, e per ogni pid (directory) trovato, attraversa il percorso in modo da identificare un processo tramite 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 2° campo. Per pkill -f e pgrep esaminare il /cmdline per ogni voce di elaborazione del PID.

pkill e pgrep usa il readproc chiamata di sistema, mentre killall non. Non potrei dire se c'è una differenza di prestazioni:dovrai confrontarla da solo.


Linux
  1. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  2. Qual è la differenza tra Sudo Su – e Sudo Su –?

  3. La differenza tra Getty e Agety?

  4. La differenza tra .exrc e .vimrc?

  5. La differenza tra '$ . Foo' E '$ ./foo'??

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra i comandi kill e killall?

4 modi per uccidere un processo:kill, killall, pkill, xkill

Come uccidere i processi in Linux usando kill, killall e pkill

Qual è la differenza tra kill , pkill e killall?

Qual è la differenza tra unlink e rm?