问题描述
我向/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
列出的其他作业可以在启动,停止和重新启动时正常工作。
为什么暴发户看不到我的新脚本?
最佳方法
使用以下命令来检查脚本语法的简单方法:
init-checkconf -d /etc/init/service_name.conf
我发现,即使使用有效的Upstart文件,如果上次引导服务器时该文件不存在,我也必须重新启动服务器以使Upstart看到该文件。
次佳方法
使用initctl reload-configuration
重新加载配置时,请检查新贵日志(位于/var/log/syslog
中)。如果出现语法错误,它将显示在此处。这通常就是为什么您不能使用新的暴发户配置。
第三种方法
我觉得有点傻…但是这里是:
我在新贵脚本的最后错过了”end script”节。
post-start script
echo "minecraft started"
本来应该
post-start script
echo "minecraft started"
end script
我不确定为什么它在没有end script
的情况下适用于@schkovich,但是…
第四种方法
在我的情况下,这是一个空的author
字段,如下所示:
author ""
只有在引号中添加了某些内容后,它才起作用。
# initctl reload-configuration
也将/etc/init/servicename.conf:2: Expected token
而不是stdout抛出到syslog中。太忙而无法为即将死去的软件包提交错误报告。
第五种方法
也许不适用于此,但值得一提:如果您为正在运行的服务编辑Upstart配置文件,则运行restart
不会重新加载配置。您必须运行stop
和start
才能使新更改生效。
http://upstart.ubuntu.com/cookbook/#restart