我有红宝石申请 我的申请包括一些预定的工作,每2小时或3小时或更长时间连续工作 我经常对应用程序进行更改,因此我必须终止应用程序并重新运行它 我一般遵循这3个步骤
ps -ef|grep rackup
kill -9 PID
rake run
因此,如果它们正在执行中,它的预定工作就会生效...... 是否有任何方法可以在作业完成之前停止kill -9命令(可能是一些锁或脚本)
答案 0 :(得分:1)
您需要拯救SystemExit
例外,或使用trap
或at_exit
信号处理程序。 More info here
答案 1 :(得分:1)
无法捕获,阻止或忽略SIGKILL
(来自原始POSIX.1-1990
标准,定义为整数值9
)。
您可能希望发送SIGKILL
(整数值SIGTERM
),而不是发送15
,这样您就可以trap it in your application。
如果没有看到应用程序的实际代码,很难确切告诉您应该如何操作,但一个好的方法是在信号处理程序中设置一个变量,并检查其状态在您的应用程序中可以正常终止的某些点。