【问题标题】:Kill callback rake杀死回调 rake
【发布时间】:2018-12-10 14:19:02
【问题描述】:

我有一个非常长的 rake 任务,完成将结果写入文件。我想杀死它,但将它的当前结果写入文件中。

我知道我可以让它在每次迭代时写入文件,但这会使它更长。那么有没有办法在任务被杀死之前调用函数呢?

【问题讨论】:

    标签: ruby rake kill


    【解决方案1】:

    假设进程被优雅地终止(即不是通过kill -9 或任何其他SIGKILL),您可以从信号中解救并在终止前“做点什么”。 (如果您愿意,甚至可以拒绝终止!)

    最基本的方法是定义一个at_exit proc:

    at_exit { write_something_to_file }
    

    或者,您可以更细化并在代码中定义 rescue 块:

    rescue SystemExit, Interrupt
      # ...
    

    ...或者,您可以通过自定义信号(例如USR1)“终​​止”进程来建立更多控制权,而不是发送SIGINThttps://ruby-doc.org/core/Signal.html

    您可以采用多种不同的方法,只要不是发送 SIGKILL,因为这是设计无法捕获的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      相关资源
      最近更新 更多