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