GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la differenza tra pkill e killall?

Il pgrep e pkill le utilità sono state introdotte in Solaris 7 di Sun e, come notato da g33klord, accettano 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 è utile quando vuoi stare attento e rivedere prima l'elenco dei processi di corrispondenza con pgrep , quindi procedi a ucciderli con pkill . pgrep e pkill sono forniti dal pacchetto procps, che fornisce anche altri /proc utilità del file system, come ps , top , free , uptime tra gli altri.

Il killall Il comando è fornito dal pacchetto psmisc e differisce da pkill in quanto, per impostazione predefinita, corrisponde esattamente al nome dell'argomento (fino ai primi 15 caratteri) quando si determinano i processi a cui verranno inviati i segnali. Il -e , --exact L'opzione 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 una barra (/ ), l'argomento viene interpretato come un nome di file e i processi che eseguono quel particolare file verranno selezionati come destinatari del segnale. killall supporta anche la corrispondenza delle espressioni regolari dei nomi dei processi, tramite -r , --regexp opzione.

Ci sono anche altre differenze. Il killall Il comando, ad esempio, ha opzioni per abbinare i processi in base all'età (-o , --older-than e -y , --younger-than ), mentre pkill può essere detto di terminare solo i processi su un terminale specifico (tramite il -t opzione). Chiaramente quindi, i due comandi hanno nicchie specifiche.

Nota che il killall comando sui sistemi discendenti da Unix System V (in particolare Solaris di Sun, AIX di IBM e HP-UX di HP) uccide tutti processi che possono essere interrotti da un particolare utente, spegnendo efficacemente il sistema se eseguito da root.

Le utilità Linux psmisc sono state portate su BSD (e in estensione Mac OS X), quindi killall segue la semantica "uccidi i processi per nome".


pkill è quello che vale la pena insegnare alle generazioni future, sia per i filtri che hai menzionato sia per il fatto che è abbinato al pgrep altamente riutilizzabile . Uccidono i processi allo stesso modo, e nessuno dei due uccide in modo ricorsivo, anche se con pgrep , puoi selezionare per sessione (per-tty, think setsid) o gruppo di processi (think job control).


una differenza è che killall prendi il nome esatto del processo come argomento mentre pkill può assumere un nome parziale o completo.

Puoi fare riferimento a questa domanda per saperne di più su pkill


Linux
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. La differenza tra Kill, Pkill e Killall?

  3. Qual è la differenza tra strtok_r e strtok_s in C?

  4. Qual è la differenza tra fsck ed e2fsck?

  5. Qual è la differenza tra ls e l?

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra Login e Non-Login Shell

Qual è la differenza tra il comando apt e apt-get?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Qual è la differenza tra i comandi kill e killall?