2008-12-04 5 views
8

Estoy desarrollando mi aplicación (en Linux) y lamentablemente a veces se cuelga. Puedo usar Ctrl+C para enviar sigint, pero mi programa está ignorando sigint porque ya no está. Así que tengo que hacer el proceso de matar-dance:Cómo vincular una clave a sigkill en bash?

Ctrl+Z 
$ ps aux | grep process_name 
$ kill -9 pid 

¿Hay una manera de configurar fiesta para enviar la señal kill para el proceso actual al pulsar - digo - Ctrl+Shift+C?

Respuesta

2

Dado que no hay una clave vinculada para SIGKILL, lo que puede hacer es crear un alias para guardar algo de escritura, si SIGQUIT no lo corta para usted. En primer lugar, el baile

Ctrl+Z 
$ ps aux | grep process_name 
$ kill -9 pid 

puede resumirse (si hay sólo una instancia del proceso que se quiere matar) como

Ctrl+Z 
$ pkill -9 process_name 

si su caso de uso siempre va a suspender luego matar, puede crear un alias para matar el último proceso corrió como

$alias pks="pkill -9 !!:0" 

Añadir ese alias en su ~/.bash_profile.

+1

en lugar de esto se podría utilizar el matanza% que mata el último trabajo – flolo

+0

que no funciona en todas partes, flolo –

+1

En Linux, killall process_name matará todos los procesos con ese nombre. Precaución: killall en Solaris y otros unixes mata todos los procesos. – ataylor

6

No creo que haya ninguna clave que pueda usar para enviar un SIGKILL.

¿Seguirá SIGQUIT? Si no está captando eso, el valor predeterminado es volcar el proceso. Por defecto, esto es^\. Puede ver esto ejecutando:

$ stty -a 

en un terminal. Debe decir:

quit = ^\ 
+0

¿Cómo funciona esto? Si estoy escribiendo una nueva aplicación de terminal, ¿debería saberlo o se maneja en un nivel inferior? –

+0

Se maneja en el nivel tty en el kernel. Cuando ve la tecla Salir, envía un SIGQUIT al proceso en primer plano en esa terminal. Puede capturar SIGQUIT si desea detenerlo, pero los volcados de núcleo bajo demanda son bastante útiles. – camh

3

puede enviar una señal de SIGQUIT al proceso actual en primer plano pulsando^\

También puede (de forma predeterminada, puede ejecutar stty -a para ver el valor actual de quit). matar el último proceso en segundo plano de la concha mediante la ejecución de

$ kill %% 
Cuestiones relacionadas