Equivalente a ctrl c en el comando para cancelar un programa


Estoy ejecutando un programa largo en una máquina remota, y quiero detenerlo, pero mi problema es que si uso el comando kill, el programa saldrá sin guardar los resultados. Normalmente lo que hago para terminar el programa es usar ctrl c y en ese caso el programa guarda los resultados, pero en este momento no estoy en la máquina que está ejecutando la sesión, por lo que no puedo hacer ctrl c.

Mi pregunta es: ¿hay alguna manera de hacer de forma remota el equivalente de ctrl c?.

Author: Eduardo, 2009-02-05

5 answers

Intenta:

kill -SIGINT processPIDHere

Básicamente Ctrl C envía la señal SIGINT (interrupción) mientras que kill envía la señal SIGTERM (terminación) por defecto a menos que especifique la señal a enviar.

 86
Author: Firas Assaad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-07 08:13:30

Ctrl c solo envía una señal SIGINT, pero hay otras señales que son un poco más suaves. http://www.gnu.org/software/libtool/manual/libc/Termination-Signals.html

Creo que puedes usar el comando kill para enviar alguna otra señal. (ver man kill para más información)

 6
Author: Johan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-24 12:33:47

Si controla el proceso remoto de larga duración, podría instalar un manejador de señales para SIGTERM (consulte man signal y man sigaction y las muchas preguntas sobre este tema), para limpiar bien antes de morir.

Eso es algo muy común.

 4
Author: dmckee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-05 14:57:46

Aquí hay un ejemplo para mongod

Para iniciar el demonio desde la línea de comandos: mongod &

Luego más tarde kill -SIGINT `pgrep mongod`

 1
Author: Michael Cole,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-26 22:36:58

Tenga en cuenta también en su manejador de señales, que es como un manejador de interrupciones en el que está muy limitado en cuanto a lo que se le permite hacer en él sin corromper el resto de su programa. Lo mejor que puedes hacer aquí es establecer una variable atomic_t "should_quit".

 0
Author: Paul Betts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-05 15:02:38