Cosa fare quando Ctrl-C non ucciderà il lavoro in esecuzione?

90

A volte, i processi ignorano il segnale SIGINT inviato da Ctrl - C in Bash. Ad esempio, man e vi . Supponendo che tu non voglia google o leggi il manuale su come uscire dal processo in esecuzione, c'è una sequenza di tasti che sempre funzionerà (senza lasciare il terminale)?

    
posta Olivier Lalonde 20.11.2010 - 12:47

7 risposte

123

Invia il segnale SIGQUIT con Ctrl + \ .

.. $ sleep 10
^\Quit

→ Questo è equivalente a kill -3 pid . I programmi eseguiti nello spazio utente non ignorano sigquit.

C'è anche un set di scorciatoie da tastiera Magic SysRq . Uno dei più interessanti è questo: Alt + SysRq + k . Uccide ogni processo sulla console virtuale corrente. Se uno dei tuoi tty è completamente e completamente rotto, questo può essere usato per tornare . Sul tty che esegue X.org, può essere usato per uccidere X senza pietà.

Il tasto SysRq è, sulla maggior parte delle tastiere, lo stesso del tasto Stampa. Sul mio notebook, può essere richiamato usando il tasto Fn; Cioè Alt → Fn → Stampa → k in questo ordine.

Ecco alcune delle scorciatoie di gestione dei processi di base:

  • Ctrl + Z : pausa a processo (più bg per riprendere in background, fg per aumentare in primo piano)
  • Ctrl + C : chiedi cortesemente al processo di farlo Chiudi ora
  • Ctrl + \ : uccide senza pietà il processo che è attualmente in primo piano
  • Alt + SysRq + s : scrivi dati su disco (fallo sempre prima di uccidere qualcosa di importante)
  • Alt + SysRq + s , k : uccide senza pietà tutto il corrente processi su una determinata console virtuale
  • Alt + SysRq + s , b : riavvia senza pietà senza smontaggio,
  • Alt + SysRq + r , e , i , s , u , b : sicuro r eboot e ven i f il s ystem è u tterly b roken,

Nota: Ctrl + Z , in contrasto con Ctrl + C e Ctrl + \ , funziona anche per man , vi , less e simili.

In caso di dubbi, la procedura follwing funzionerà quasi sempre:

~$ sleep 10
^Z
[5]+  Stopped              sleep 10
~$ ps
  PID TTY          TIME CMD
 4804 pts/0    00:00:00 bash
 6207 pts/0    00:00:00 sleep
 6208 pts/0    00:00:00 ps
~$ kill -9 6207
[5]+  Killed                  sleep 10
~$ 

^ Z indica chiaramente che Ctrl + Z è stato premuto.

Per uno sguardo più approfondito su Conchiglie e Terminali, vedi anche le mie risposte su:

risposta data Stefano Palazzo 20.11.2010 - 13:07
11

Puoi provare Ctrl + \

    
risposta data Benjamin 20.11.2010 - 13:06
8

A volte il CTRL + C viene inviato al programma o al canale di input sbagliato. Questo è particolarmente comune con editor come vi , con comandi con output in pipe, comandi di bash complessi che coinvolgono loop, ecc.

Una soluzione semplice e veloce è sospendere il lavoro CTRL + Z e poi ucciderlo per numero di lavoro: kill %1 o kill -9 %1 , ecc.

    
risposta data tylerl 20.11.2010 - 21:18
3

Per uscire da uomo , usa q Per lasciare vi usa :q

    
risposta data antivirtel 20.11.2010 - 23:46
3
  • Prova uno di questi:

    Ctrl + 4

    Ctrl + \

  • o

    Ctrl + Z e quindi esegui:

    kill %1

Dove %1 è il numero di lavoro che è stato restituito quando hai premuto Controllo - Z . Aggiungi -9 per forzare l'uccisione.

Quando ti trovi nella console di testo, puoi anche provare: Ctrl - SysRq . Il kernel dovrebbe uccidere il processo.

O SysRq - k , uccidi tutti i processi sulla console virtuale corrente (puoi anche uccidere i programmi X e svgalib).

  

Nota: quando vengono usate le chiavi magiche SysRq per uccidere un grafico congelato   programma, il programma non ha alcuna possibilità di ripristinare la modalità testo. Questo può fare   tutto illeggibile.

Vedi: Chiave Magic SysRq e le sue combinazioni di comandi.

    
risposta data kenorb 01.10.2012 - 13:47
-1

Prova Ctrl + Alt + Backspace

Se stai usando ubuntu 10.04, vuoi abilitare questa chiave per funzionare.

Per abilitare Controllo - Alt - Backspace

Vai a Sistema - & gt; Preferenze - & gt; Tastiera

Seleziona la scheda Layout e fai clic su Opzioni di layout .

Seleziona Sequenza di tasti per uccidere il server X e attiva Controllo + Alt + Backspace .

Nota:

Premendo Ctrl - Alt - Backspace si riavvierà il server X.

    
risposta data karthick87 20.11.2010 - 12:56
-2

È possibile che tu abbia cambiato il collegamento di copia da:

CTRL + SHIFT + C

Per

CTRL + C

In questo modo, quando provi ad uccidere un processo, il CTRL + C non funziona.

Prova a sostituire il collegamento di copia su CTRL + SHIFT + C .

    
risposta data Minter 20.11.2016 - 20:36

Leggi altre domande sui tag