¿Qué hacer cuando Ctrl-C no mata el trabajo en ejecución?

91

A veces, los procesos ignoran la señal SIGINT enviada por Ctrl - C en Bash. Por ejemplo, man y vi . Suponiendo que no desea buscar en Google o leer el manual sobre cómo salir del proceso en ejecución, ¿hay alguna secuencia de teclas que siempre funcione (sin salir del terminal)?

    
pregunta Olivier Lalonde 20.11.2010 - 12:47

7 respuestas

124

Envía la señal SIGQUIT con Ctrl + \ .

.. $ sleep 10
^\Quit

→ Esto es equivalente a kill -3 pid . Los programas ejecutados en el espacio de usuario no ignoran sigquit.

También hay un conjunto de atajos de teclado Magic SysRq . Uno de los más interesantes es este: Alt + SysRq + k . Mata a todos los procesos en la consola virtual actual. Si uno de tus ttys está completo y completamente roto, se puede usar para volver atrás . En el tty corriendo X.org, se puede usar para matar a X sin piedad.

La tecla SysRq es, en la mayoría de los teclados, la misma que la tecla Imprimir. En mi computadora portátil, puede invocarse con la tecla Fn; Es decir. Alt → Fn → Imprimir → k en ese orden.

Estos son algunos de los métodos abreviados básicos de administración de procesos:

  • Ctrl + Z : pause a proceso (más bg para reanudar en segundo plano, fg para elevar al primer plano)
  • Ctrl + C : solicite cortésmente el proceso a cerrar ahora
  • Ctrl + \ : mata sin piedad el proceso que es actualmente en primer plano
  • Alt + SysRq + s : escribe datos en el disco (siempre haz esto antes de matar algo importante)
  • Alt + SysRq + s , k : mata sin piedad toda la corriente procesos en una consola virtual dada
  • Alt + SysRq + s , b : reinicio sin desterrar sin desmontar,
  • Alt + SysRq + r , e , i , s , u , b : de forma segura r eboot e ven i f el s sistema es u tterly b roken,

Nota: Ctrl + Z , en contraste con Ctrl + C y Ctrl + \ , también funciona para man , vi , less , y similares.

En caso de duda, el siguiente procedimiento funcionará casi siempre:

~$ 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 por supuesto indica que se ha presionado Ctrl + Z .

Para una vista más detallada de Conchas y Terminales, también vea mis respuestas en:

respondido por el Stefano Palazzo 20.11.2010 - 13:07
11

Puedes probar Ctrl + \

    
respondido por el Benjamin 20.11.2010 - 13:06
8

A veces, el CTRL + C se envía al programa o canal de entrada incorrecto. Esto es especialmente común con editores como vi , con comandos con salida canalizada, comandos de bash complejos que implican bucles, etc.

Una solución simple y rápida es suspender el trabajo CTRL + Z y luego eliminarlo por número de trabajo: kill %1 o kill -9 %1 , etc.

    
respondido por el tylerl 20.11.2010 - 21:18
3

Para salir de hombre , use q Para dejar vi use :q

    
respondido por el antivirtel 20.11.2010 - 23:46
3
  • Pruebe uno de estos:

    Ctrl + 4

    Ctrl + \

  • O:

    Ctrl + Z y luego ejecute:

    kill %1

Donde %1 es la cantidad de trabajo que se devolvió cuando presionó Control - Z . Agrega -9 para forzar la muerte.

Cuando está en la consola de texto, también puede intentar: Ctrl - SysRq . El kernel debería matar el proceso.

O SysRq - k , elimine todos los procesos en la consola virtual actual (también puede matar a los programas X y svgalib).

  

Nota: Cuando las teclas mágicas SysRq se usan para matar a un gráfico congelado   programa, el programa no tiene posibilidad de restaurar el modo de texto. Esto puede hacer   todo ilegible.

Consulte: la clave Magic SysRq y sus combinaciones de comandos.

    
respondido por el kenorb 01.10.2012 - 13:47
-1

Pruebe Ctrl + Alt + Retroceso

Si está utilizando ubuntu 10.04, quiere habilitar esta clave para que funcione.

Para habilitar Control - Alt - Retroceso

Ir a Sistema - & gt; Preferencias - & gt; Teclado

Seleccione la pestaña Diseños y haga clic en Opciones de diseño .

Seleccione Secuencia de teclas para eliminar el servidor X y habilite Control + Alt + Retroceso .

Nota:

Al presionar Ctrl - Alt - Retroceso reiniciará su servidor X.

    
respondido por el karthick87 20.11.2010 - 12:56
-2

Es posible que haya cambiado el atajo de copia de:

CTRL + MAYÚS + C

Para

CTRL + C

De esta forma, cuando intentas eliminar un proceso, la CTRL + C no funciona.

Intenta reemplazar el atajo de copia a CTRL + SHIFT + C .

    
respondido por el Minter 20.11.2016 - 20:36

Lea otras preguntas en las etiquetas