Skip to main content

Come uccidere i processi usando Linux

Process Management Commands (fg, bg, top, ps, kill, nice, renice, df, free) Linux Tutorial (Giugno 2025)

Process Management Commands (fg, bg, top, ps, kill, nice, renice, df, free) Linux Tutorial (Giugno 2025)
Anonim

La maggior parte delle volte vorrai che un programma termini con i propri mezzi, o, se si tratta di un'applicazione grafica, usando l'opzione di menu appropriata o usando la croce nell'angolo.

Ogni tanto un programma si blocca, nel qual caso avrai bisogno di un metodo per ucciderlo. Potresti anche voler uccidere un programma in esecuzione in background che non è più necessario eseguire.

Questa guida fornisce un metodo per uccidere tutte le versioni della stessa applicazione in esecuzione sul sistema.

Come usare il comando killall

Il comando killall uccide tutti i processi per nome. Ciò significa che se hai tre versioni dello stesso programma in esecuzione il comando killall le ucciderà tutte e tre.

Ad esempio, apri un piccolo programma come un visualizzatore di immagini. Ora apri un'altra copia dello stesso visualizzatore di immagini. Per il mio esempio ho scelto Xviewer che è un clone di Eye Of Gnome.

Ora apri un terminale e digita il seguente comando:

uccidi tutti

Ad esempio, per eliminare tutte le istanze di Xviewer, digitare quanto segue:

killall xviewer

Entrambe le istanze del programma che hai scelto di uccidere verranno chiuse.

Uccidi il processo esatto

killall può produrre strani risultati. Bene, ecco una ragione per cui. Se si ha un nome di comando di lunghezza superiore a 15 caratteri, il comando killall funziona solo sui primi 15 caratteri. Se quindi hai due programmi che condividono gli stessi primi 15 caratteri, entrambi i programmi saranno cancellati anche se volevi solo ucciderne uno.

Per aggirare questo problema è possibile specificare il seguente interruttore che ucciderà solo i file che corrispondono al nome esatto.

uccidere -e

Ignora caso quando si uccidono i programmi

Per assicurarti che il comando killall ignori il caso del nome del programma che fornisci, usa il seguente comando:

killall -Ikillall - -ignore-case

Uccidi tutti i programmi nello stesso gruppo

Quando si esegue un comando come il seguente, verranno creati due processi:

ps -ef | Di meno

Un comando è per la parte ps -ef che elenca tutti i processi in esecuzione sul proprio sistema e l'output viene reindirizzato al comando meno.

Entrambi i programmi appartengono allo stesso gruppo che è bash.

Per uccidere entrambi i programmi contemporaneamente è possibile eseguire il seguente comando:

killall -g

Ad esempio per uccidere tutti i comandi in esecuzione in una shell bash eseguire quanto segue:

killall -g bash

Tra l'altro per elencare tutti i gruppi in esecuzione eseguire il seguente comando:

ps -g

Ottieni la conferma prima di uccidere i programmi

Ovviamente, il comando killall è un comando piuttosto potente e non si vuole uccidere accidentalmente i processi sbagliati.

Usando la seguente opzione ti verrà chiesto se sei sicuro prima che ogni processo venga ucciso.

killall -i

Uccidi i processi che sono stati eseguiti per una certa quantità di tempo

Immagina di aver eseguito un programma e ci vuole molto più tempo di quanto speravi.

Puoi uccidere il comando nel modo seguente:

killall -o h4

La h nel comando sopra indica ore.

Puoi anche specificare uno dei seguenti:

  • s - secondi
  • m - minuti
  • h - ore
  • d - giorni
  • w - settimane
  • M - mesi
  • y - anni

In alternativa, se desideri annullare i comandi che hanno appena iniziato a funzionare puoi utilizzare il seguente passaggio:

killall -y h4

Questa volta il comando killall ucciderà tutti i programmi in esecuzione per meno di 4 ore.

Non dirmi quando un processo non è stato ucciso

Di default se provi e uccidi un programma che non è in esecuzione, riceverai il seguente errore:

nome programma: nessun processo trovato

Se non vuoi che ti venga detto se il processo non è stato trovato usa il seguente comando:

killall -q

Uso delle espressioni regolari

Invece di specificare il nome di un programma o comando, è possibile specificare un'espressione regolare in modo che tutti i processi che corrispondono all'espressione regolare vengano chiusi dal comando killall.

Per usare un'espressione regolare usa il seguente comando:

killall -r

Uccidi i programmi per A Specifica utente

Se vuoi uccidere un programma che viene eseguito da un utente specifico, puoi specificare il seguente comando:

killall -u

Se si desidera eliminare tutti i processi per un particolare utente, è possibile omettere il nome del programma.

Aspetta che il killall finisca

Di default killall tornerà direttamente al terminale quando lo esegui, ma puoi forzare killall ad aspettare fino a quando tutti i processi specificati sono stati chiusi prima di tornare alla finestra del terminale.

Per farlo, esegui il seguente comando:

killall -w

Se il programma non muore mai, anche killall continuerà a vivere.

Segnali Segnali Segnali

Di default il comando killall invia il segnale SIGTERM ai programmi per farli chiudere e questo è il metodo più pulito per uccidere i programmi.

Esistono tuttavia altri segnali che è possibile inviare utilizzando il comando killall ed è possibile elencarli utilizzando il seguente comando:

killall -l

La lista restituita sarà qualcosa del genere:

  • HUP
  • INT
  • SMETTERE
  • MALATO
  • TRAPPOLA
  • ABRT
  • IOT
  • AUTOBUS
  • FPE
  • UCCIDERE
  • USR1
  • SEGV
  • USR2
  • TUBO
  • ALRM
  • TERMINE
  • STKFLT
  • CHLD
  • CONT
  • STOP
  • TSTP
  • Im postazione
  • TTOU
  • URG
  • XCPU
  • XFSZ
  • VTALRM
  • PROG
  • Wynch
  • IO
  • PWR
  • SYS
  • UNUSED

Quella lista è estremamente lunga. Per leggere cosa significano questi segnali, esegui il seguente comando:

segnale uomo 7

Generalmente dovresti usare l'opzione SIGTERM predefinita, ma se il programma si rifiuta di morire puoi usare SIGKILL che forza il programma a chiudersi anche se in modo non dignitoso.

Altri modi per uccidere un programma

Ci sono altri 5 modi per uccidere un'applicazione Linux come evidenziato nella guida collegata.

Tuttavia, per risparmiarti lo sforzo di fare clic sul link qui è una sezione che mostra quali sono questi comandi sono i motivi per cui potresti usare quei comandi su killall.

Il primo è il comando kill. Il comando killall, come hai visto, è ottimo per uccidere tutte le versioni dello stesso programma. Il comando kill è progettato per uccidere un processo alla volta ed è quindi più mirato.

Per eseguire il comando kill è necessario conoscere l'ID di processo del processo che si desidera eliminare. Per questo è possibile utilizzare il comando ps.

Ad esempio per trovare una versione di Firefox in esecuzione è possibile eseguire il seguente comando:

ps -ef | grep firefox

Vedrai una riga di dati con il comando / usr / lib / firefox / firefox alla fine. All'inizio della riga vedrai il tuo ID utente e il numero dopo che l'ID utente è l'ID del processo.

Usando l'ID di processo puoi uccidere Firefox eseguendo il seguente comando:

uccidi -9

Un altro modo per uccidere un programma è usare il comando xkill. Questo è generalmente usato per uccidere applicazioni grafiche inadeguate.

Per uccidere un programma come Firefox apri un terminale ed esegui il seguente comando:

xkill

Il cursore ora cambierà in una grande croce bianca. Passa il cursore sulla finestra che desideri eliminare e fai clic con il tasto sinistro del mouse. Il programma uscirà immediatamente.

Un altro modo per uccidere un processo è usando il comando top di Linux. Il comando in alto elenca tutti i processi in esecuzione sul tuo sistema.

Tutto quello che devi fare per uccidere un processo è premere il tasto "k" e inserire l'ID di processo dell'applicazione che desideri uccidere.

In precedenza in questa sezione il comando kill e richiedeva di trovare il processo usando il comando ps e quindi di uccidere il processo usando il comando kill. Questa non è l'opzione più semplice con qualsiasi mezzo.

Per prima cosa, il comando ps restituisce un sacco di informazioni che non ti servono. Tutto quello che volevi era l'ID del processo. È possibile ottenere l'ID del processo più semplicemente eseguendo il seguente comando:

pgrep firefox

Il risultato del comando precedente è semplicemente l'ID del processo di Firefox. Ora puoi eseguire il comando kill come segue:

uccidere

(Sostituire con l'ID di processo effettivo restituito da pgrep).

In realtà è più semplice, tuttavia, fornire semplicemente il nome del programma a pkill come segue:

pkill firefox

Infine, è possibile utilizzare uno strumento grafico come quello fornito con Ubuntu chiamato "Monitor di sistema". Per eseguire "Monitor di sistema", premere il tasto Super (tasto Windows nella maggior parte dei computer) e digitare "sysmon" nella barra di ricerca. Quando viene visualizzata l'icona del monitor di sistema, fare clic su di essa.

Il monitor di sistema mostra un elenco di processi. Per terminare un programma in modo pulito selezionalo e premi il tasto di fine nella parte inferiore dello schermo (o premi CTRL ed E). Se questo non funziona, fai clic con il tasto destro e scegli "Uccidi" o premi CTRL e K sul processo che desideri uccidere.