2016-08-08 13 views
1

Ich habe Ruby-Anwendung.
Meine Anwendung besteht aus einigen geplanten Jobs, die alle 2 oder 3 Stunden oder länger dauern.
Ich mache regelmäßig Änderungen an der Anwendung, daher muss ich die Anwendung beenden und erneut ausführen.
ich folgen in der Regel diese 3 Schritte
Beenden kill Befehl

ps -ef|grep rackup 
kill -9 PID 
rake run 

So deshalb seine geplante Aufträge erfolgen bekommen, wenn sie unter Ausführung sind ...
es ist eine Möglichkeit, töten zu stoppen -9 Befehl bis Aufträge fertig bekommen (Mai seien Sie einige Schlösser oder Skript)

Antwort

1

Die SIGKILL (aus dem ursprünglichen POSIX.1-1990 Standard, definiert als Integer-Wert 9) kann nicht gefangen, blockiert oder ignoriert werden.

Statt ein SIGKILL senden Sie wahrscheinlich wollen einen SIGTERM (Integer-Wert 15) senden, so dass Sie trap it in your application.

Ohne den tatsächlichen Code Ihrer Anwendung zu sehen, ist es schwierig, Ihnen genau zu sagen, wie Sie es tun sollten, aber ein guter Ansatz, um damit zu beginnen, ist eine Variable in Ihrem Signal-Handler zu setzen und seinen Status zu überprüfen Ihre Anwendung, wo es anmutig beenden kann.