L'équivalent de ctrl-c dans la commande pour annuler un programme
Je suis en cours d'exécution d'un long programme linux dans une machine distante, et je veux l'arrêter, mais mon problème est que si j'utilise la commande kill puis le programme va quitter sans enregistrer les résultats. Normalement, ce que je faire pour terminer le programme à l'aide de ctrl c et dans ce cas, le programme enregistre les résultats, mais pour l'instant je ne suis pas dans la machine qui exécute la session donc je ne peux pas faire ctrl c.
Ma question est: est-il possible de le faire à distance l'équivalent de ctrl-c?.
Vous devez vous connecter pour publier un commentaire.
Essayer:
Fondamentalement Ctrl-C envoie le
SIGINT
(interruption) du signal tout en tuer envoie leSIGTERM
(résiliation) du signal par défaut, sauf si vous spécifiez le signal à envoyer.ping
comme ceci:ps aux | grep "ping"
, le premier numéro de la colonne est le pid.ctrl-c envoie le signal SIGINT, mais il y a d'autres signaux, c'est un peu plus doux. http://www.gnu.org/software/libtool/manual/libc/Termination-Signals.html
Je pense que vous pouvez utiliser la commande kill pour envoyer de l'autre signal.
(voir l'homme de tuer pour plus d'info)
Si vous le contrôle de la longue distance, vous pouvez installer un gestionnaire de signal pour le signal SIGTERM (voir
man signal
etman sigaction
et la beaucoup de questions sur ce sujet), pour nettoyer les bien avant de mourir.C'est un très commun de chose à faire.
Voici un exemple pour mongod
Pour démarrer le démon de la ligne de commande:
Puis plus tard
Garder à l'esprit aussi bien dans votre gestionnaire de signal, que c'est comme un gestionnaire d'interruption dans que vous êtes très limité à ce que vous êtes autorisé à faire sans endommager le reste de votre programme. La meilleure chose que vous pouvez faire ici est de définir une atomic_t "should_quit" à la variable.
Je suis en train de faire comme ci-dessous de façon
ou
J'ai utilisé à oublier le nom de signal. j'.e SIGINT/SIGKILL ici, donc je suis en utilisant un nombre comme killall -2 ou killall -9