新贵没有看到我的新脚本

Jas*_*ien 28 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"
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。如果有语法错误,它会显示在那里。这通常是您不能使用新的暴发户配置的原因。


Jas*_*ien 9

我觉得有点愚蠢......但它是:

我错过了新贵脚本最后的“结束脚本”节......

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.

  • 因为我添加了结束脚本节。内置(头脑)自动代码完成。:( (2认同)

int*_*_ua 5

就我而言,它是一个空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。太忙了,无法为一个垂死的包提交错误报告。