Ich führe ein langes Linux-Programm auf einem Remote-Computer aus und möchte es stoppen. Mein Problem ist jedoch, dass das Programm beendet wird, wenn ich den Befehl kill verwende, ohne die Ergebnisse zu speichern. Normalerweise benutze ich Ctrl+ , um das Programm zu beenden. CIn diesem Fall speichert das Programm die Ergebnisse, aber im Moment bin ich nicht auf dem Computer, auf dem die Sitzung ausgeführt wird, sodass ich Ctrl+ nicht drücken kann C.
Meine Frage ist: Gibt es eine Möglichkeit, auf entfernte Weise das Äquivalent von Ctrl+ zu tun C?
linux
command-line
copy-paste
Eduardo
quelle
quelle
ping
wie folgt ausführen :ps aux | grep "ping"
Die erste Zahl in der Spalte ist die PID.kill -2 PID
ctrl c sendet nur ein SIGINT-Signal, aber es gibt einige andere Signale, die etwas leiser sind. http://www.gnu.org/software/libtool/manual/libc/Termination-Signals.html
Ich denke, dass Sie den Befehl kill verwenden können, um ein anderes Signal zu senden. (siehe Mann töten für weitere Informationen)
quelle
Wenn Sie den lang laufenden Remote-Prozess steuern, können Sie einen Signal-Handler für SIGTERM installieren (siehe
man signal
undman sigaction
und die vielen SO-Fragen zu diesem Thema), um vor dem Absterben eine ordnungsgemäße Bereinigung durchzuführen.Das ist eine sehr häufige Sache.
quelle
Hier ist ein Beispiel für Mongod
So starten Sie den Daemon über die Befehlszeile:
Dann später
quelle
Denken Sie auch in Ihrem Signal-Handler daran, dass es wie ein Interrupt-Handler ist, da Sie nur sehr eingeschränkt wissen, was Sie darin tun dürfen, ohne den Rest Ihres Programms zu beschädigen. Das Beste, was Sie hier tun können, ist, eine atomic_t "should_quit" -Variable festzulegen.
quelle
Ich mache wie folgt
oder
Ich habe den Namen des Signals vergessen. dh SIGINT / SIGKILL hier, also benutze ich eine Nummer dafür wie killall -2 oder killall -9
quelle