Upstart 看不到我的新脚本

Upstart 看不到我的新脚本

我添加了一个/etc/init/名为的新脚本minecraft.conf,其中包含以下脚本:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

当我尝试时start minecraft出现错误:start: Unknown job: minecraft

我试过运行initctl list,但我的 minecraft 作业没有列出。我试过运行initctl reload-configuration,但没有任何区别。

列出的其他作业initctl list可以正常启动、停止和重新启动。

为什么 upstart 看不到我的新脚本?

答案1

检查脚本语法的简单方法是使用以下命令:

init-checkconf -d /etc/init/service_name.conf

我发现,即使有一个有效的 Upstart 文件,如果该文件在上次启动服务器时不存在,我也必须重新启动服务器才能让 Upstart 看到该文件。

答案2

/var/log/syslog使用 重新加载配置时,检查 upstart 日志(位于) initctl reload-configuration。如果有语法错误,它会显示在那里。这通常是您无法使用新的 upstart 配置的原因。

答案3

我觉得自己有点傻...但是事实就是如此:

我错过了新贵脚本最末尾的“结束脚本”节……

post-start script
   echo "minecraft started"

本来应该

post-start script
   echo "minecraft started"
end script

我不确定为什么没有 它end script也适用于@schkovich...

答案4

也许不适用于此,但值得一提:如果您编辑正在运行的服务的 Upstart 配置文件,则运行restart不会重新加载配置。您必须运行stop才能start使新更改生效。

http://upstart.ubuntu.com/cookbook/#restart

相关内容