我添加了一个/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
使新更改生效。