2016-04-24 3 views
2

Wenn ich einen lang laufenden Befehl wie einen Datenbankabzug mit exec starte, wie würde ich diesen Befehl auf dem entfernten Host abbrechen, wenn zum Beispiel der Benutzer Starten Sie Control-C, um das Skript zu beenden.Wie lehne ich einen lang laufenden Befehl Ruby Net :: SSH ab

In meinen Tests scheint es, auch wenn Sie Control-C und killen die Anwendung der Remote-Befehl läuft weiter.

Antwort

0

Capture-SIGINT und Systemexit und aufzuräumen:

rescue SystemExit, Interrupt 
    # clean up 
    # net-ssh execute a kill on the pid 
    # raise error 
end 
+1

Wäre das nicht nur den Prozess Rubin töten und kein Prozess auf einer Remote-Host gestartet? Ich schätze, Sie könnten Process.kill durch jeden Remote-Befehl ersetzen, der den Prozess beenden würde. Auch du würdest den Fehler nach der Rettung erhöhen wollen, oder? –

+0

Danke, @keithrebennett, Code-Beispiel basierend auf Ihren Vorschlägen bearbeitet. –

Verwandte Themen