在Windows关机期间优雅closuresruby进程

我有一个计划的ruby进程,每分钟运行一个Windows 2012 R2计算机 – 有时只有几秒钟后退出,其他时间,运行5分钟左右。

我试图实现的是能够closures机器,等待过程退出(如果正在运行), 然后再closures。 closures需要从外部启动(例如,通过AWS API调用)。

有没有办法做到这一点?

我尝试了一些不同的东西,但无济于事:

  • 在Ruby代码中的Signal.trap(...) – 似乎没有信号发送到进程
  • 一个本身调用Wait-Process的closures脚本 – 在这种情况下,我认为 ruby进程在closures脚本执行前被杀死。

我也看到有一种方法可以让windows程序挂接到特定的窗口事件(例如: CTRL_SHUTDOWN_EVENT )并返回值来说明是否继续closures,但是我怎么能够钩住在这个ruby进程中。 也许它可以包装在一些Windows程序来允许这个?

您正在使用错误的Windows机制来完成您想要的任务。 我会将ruby进程重写为Windows服务,以便在closures时Windows将向服务发送信号。

或者,你可以安排一个额外的任务“closures”,停止正在运行的Ruby任务,并做一些干净的退出,因为你会写在你的Ruby任务。