如何使用 upstart 指定守护进程关闭命令?

如何使用 upstart 指定守护进程关闭命令?

在 upstart 配置中,我如何定义应该使用什么命令来关闭服务器。假设我有一个守护进程,它有两个独立的进程。

  • startup.sh-启动服务器
  • shutdown.sh-关闭服务器

假设我有一个如下所示的 upstart 文件。

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

我如何告诉 upstartshutdown.sh在关闭服务器时应调用什么?upstart 通常如何关闭守护进程?

答案1

使用它exec来启动该过程是可以的,但是在停止它时,如果您确实需要运行特定的脚本或命令集,那么您可以使用该 pre-stop节。

pre-stop exec shutdown.sh

我假设您尝试过只使用 exec 节,但没有成功,可能是因为您的守护进程需要一些专门的清理。请注意,当作业停止时,行为良好的守护进程应该会收到来自 upstart 的信号,如果它们能正确处理信号,则不需要进行额外的清理。

停止作业需要向其发送 SIGTERM。如果在 SIGTERM 之前需要执行任何操作,请在此处执行。可以说,服务应该能够非常优雅地处理 SIGTERM,因此这应该不是必需的。

如果有任何关键的事情,比如刷新到磁盘,并且提高终止超时不是一个选项,那么 pre-stop 是一个不错的选择

另请阅读本节了解停止作业时发生的整个工作流程。注意 pre-stop 何时运行,以及之后如何向进程发送信号,这就是 upstart 正常处理停止作业的方式。

我的资料来源是 Upstart 官方手册:http://upstart.ubuntu.com/cookbook/

相关内容