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


9

在新贵配置中,我如何定义应使用什么命令来关闭服务器。可以说我有两个独立进程的守护进程。

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

假设我有一个看起来像这样的新贵文件。

description "Some Example Service"
author "Me"

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

exec startup.sh 

我如何告诉upstart shutdown.sh在关闭服务器时应该调用?通常,新贵如何关闭守护程序?

Answers:


10

使用exec开始进程可以,但是在停止进程时,如果绝对需要运行特定的脚本或命令集,则可以使用该 pre-stop节。

pre-stop exec shutdown.sh

我假设您尝试仅使用exec节,但是它没有用,可能是因为您的守护程序需要进行一些专门的清理。请注意,行为良好的守护程序应在作业停止时从新启动程序接收信号,并且如果它们适当地处理了该信号,则无需进行其他清理。

停止工作涉及向其发送SIGTERM。如果在SIGTERM之前需要做任何事情,请在此处进行。可以说,服务应该非常优雅地处理SIGTERM,因此这不是必需的。

如果有紧急事件,例如刷新磁盘,并且不能提高kill time,则停止前不是一个坏地方

另请阅读本节以了解停止工作时的整个工作流程。注意何时运行预停止,以及随后如何将信号发送到流程,这是新贵通常如何处理停止的作业。

我的资料来自Upstart官方食谱,网址为:http : //upstart.ubuntu.com/cookbook/


1
“请注意,行为良好的守护程序应在作业停止时从新启动者接收信号,并且如果它们适当地处理了该信号,则无需进行其他清理。” -请注意,我们在Unix世界中使用脚本是为了控制程序员工作以外的事物。这太荒谬了,因为我们需要一个地方,例如发送电子邮件,从dis删除锁等,并且此任务不必一定是守护程序本身的一部分。因此,新贵还没有准备好用于服务器环境。
kakaz 2013年

从这个答案(一个!),我看到没有什么好方法可以做到我们所需要的?
kakaz 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.