我添加了一个包含脚本的新脚本/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"
Run Code Online (Sandbox Code Playgroud)
当我尝试时start minecraft,出现错误:start: Unknown job: minecraft
我试过跑步initctl list,但没有列出我的《我的世界》工作。我试过跑步initctl reload-configuration,没有任何区别。
列出的其他作业initctl list在启动、停止和重新启动时都可以正常工作。
为什么新贵看不到我的新脚本?
小智 13
检查脚本语法的一种简单方法是使用以下命令:
init-checkconf -d /etc/init/service_name.conf
Run Code Online (Sandbox Code Playgroud)
我发现即使有一个有效的 Upstart 文件,如果上次启动服务器时该文件不存在,我也必须重新启动服务器,Upstart 才能看到该文件。
小智 12
检查新贵日志(它在/var/log/syslog),而使用重新加载配置initctl reload-configuration。如果有语法错误,它会显示在那里。这通常是您不能使用新的暴发户配置的原因。
我觉得有点愚蠢......但它是:
我错过了新贵脚本最后的“结束脚本”节......
post-start script
echo "minecraft started"
Run Code Online (Sandbox Code Playgroud)
本来应该
post-start script
echo "minecraft started"
end script
Run Code Online (Sandbox Code Playgroud)
我不确定为什么它在没有end script.
就我而言,它是一个空author字段,如下所示:
author ""
Run Code Online (Sandbox Code Playgroud)
它只有在引号中添加一些内容后才起作用。
# initctl reload-configuration
Run Code Online (Sandbox Code Playgroud)
也扔到/etc/init/servicename.conf:2: Expected token syslog 而不是 stdout。太忙了,无法为一个垂死的包提交错误报告。