在 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/