GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa fare quando Ctrl + C non può terminare un processo?

Per capire il problema del perché Ctrl + C non funziona, è molto utile capire cosa succede quando lo premi:

La maggior parte delle shell legano Ctrl + C per "inviare un segnale SIGINT al programma attualmente in esecuzione in primo piano". Puoi leggere i diversi segnali tramite il segnale dell'uomo:

 SIGINT        2       Term    Interrupt from keyboard

I programmi possono ignorare quel segnale, così come possono ignorare SIGTSTP:

 SIGTSTP   18,20,24    Stop    Stop typed at tty

(Che è ciò che fa la maggior parte delle shell quando premi Ctrl + Z , motivo per cui non è garantito che funzioni.)

Ci sono alcuni segnali che non possono essere ignorati dal processo:SIGKILL, SIGSTOP e alcuni altri. Puoi inviare questi segnali tramite il comando kill. Quindi, per interrompere il tuo processo di impiccagione / zombi, trova semplicemente l'ID del processo (PID). Ad esempio, utilizza pgrep o ps e poi kill it:

 % kill -9 PID

Se Ctrl +C (SIGINT) non funziona, prova Ctrl +\ (SIGLASCI). Quindi prova Ctrl +Z (SIGTSTP). Se questo ti riporta al prompt della shell, esegui kill sull'ID del processo. (L'impostazione predefinita è il segnale SIGTERM, che puoi specificare con kill -TERM . In alcune shell, potresti essere in grado di utilizzare %1 per fare riferimento al PID.) Se non funziona, vai su un altro terminale o sessione SSH ed esegui kill o kill -TERM sull'ID del processo. Solo come ultima risorsa dovresti fare kill -KILL , ovvero kill -9 , poiché non offre al processo alcuna possibilità di interrompersi in modo pulito, sincronizzare i file aperti, rimuovere i file temporanei, chiudere le connessioni di rete, ecc.


Vedi anche questo link.

Ctrl +Z :mette in pausa un processo.

Ctrl +C :chiedi cortesemente al processo di arrestarsi ora.

Ctrl +\ :uccidi senza pietà il processo che è attualmente in primo piano


Linux
  1. Cosa sono i processi zombi e come trovare e uccidere i processi zombi?

  2. Cosa succede se "uccidi -9" non funziona?

  3. Linux – Quando non dovrei uccidere -9 Un processo?

  4. Processo discendenti?

  5. Cosa succede quando un thread si biforca?

Come uccidere un processo in Linux

Kill Command in Linux

Cosa ha ucciso il mio processo e perché?

Qualcuno può spiegare in dettaglio cosa fa set -m?

Qual è la differenza tra kill , pkill e killall?

Cosa fa kill -- -0?