制作关机钩子的最佳方法?

Bin*_*rus 9 shutdown upstart

由于 Ubuntu 依赖 upstart 有一段时间了,我想使用 upstart 作业在系统关闭或重新启动时正常关闭某些应用程序。在这些应用程序关闭之前,系统的关闭或重新启动必须暂停。

应用程序有时会手动启动,并且在系统关闭时应该由脚本(我已经拥有)自动结束。由于在没有(几乎所有)其他服务运行的情况下无法可靠地结束应用程序,因此必须在关闭的其余部分开始之前结束应用程序。

我想我可以通过关闭时触发的新贵工作来解决这个问题,但我不确定我应该以哪种方式使用哪些事件。到目前为止,我已经阅读了以下(部分自相矛盾的)陈述:

  • upstart 没有一般的关机事件
  • start on starting shutdown在作业定义中使用类似的节
  • start on runlevel [06S]在作业定义中使用类似的节
  • start on starting runlevel [06S]在作业定义中使用类似的节
  • start on stopping runlevel [!06S]在作业定义中使用类似的节

从这些建议中,产生了以下问题:

  • 在 Ubuntu 的新贵中是否有或没有一般的关闭事件?
  • 实现“关闭挂钩”的推荐方法是什么?
  • 事件运行级别 [x] 何时触发;这是进入运行级别时还是进入运行级别时?
  • 我们可以使用类似start on starting runlevel [x]或 的东西start on stopping runlevel [x]吗?
  • 我的问题的最佳解决方案是什么?

非常感谢

gee*_*aur 2

startingrunlevel是单独的事件,所以你不能有意义地说starting runlevel N.

runlevel N事件在进入运行级别开始时发出。如果你start on runlevel N那么你的任务在入口处运行。进入运行级别完成后运行的方式是run on started rc RUNLEVEL=N

据我了解,你需要 astart on runlevel [06S]来做你想做的事;理论上它应该在其他任何东西停止之前运行。为了更好地控制,您可以使用这样的方法start on stopping apache or stopping mysql or ...,以便您的任务在允许关闭其中任何任务之前运行。


编辑将运行级别 5 更改为 S。