如何调试间歇性失败的upstart脚本?

时间:2017-10-17 23:21:52

标签: linux ubuntu-14.04 ubuntu-12.04 boot upstart

我有一个流程,我希望尽快开始我的系统rebooted,所以我使用upstart脚本,但有时候我注意到的是我的流程没有得到在硬重启(启动和启动机器)期间启动,所以我认为我的新手脚本在硬重启后没有被踢入。我相信Hard Reboot没有运行级别。

我很困惑,为什么有时候在重启过程中它会起作用,但有时它不起作用。我该如何调试呢?

以下是我的新贵脚本:

# sudo start helper
# sudo stop helper
# sudo status helper
start on runlevel [2345]
stop on runlevel [!2345]

chdir /data
respawn

pre-start script
  echo "[`date`] Agent Starting" >> /data/agent.log
  sleep 30
end script

post-stop script
  echo "[`date`] Agent Stopping" >> /data/agent.log
  sleep 30
end script

limit core unlimited unlimited
limit nofile 100000 100000
setuid goldy
exec python helper.py

有没有办法调试出来发生了什么?我相信,我可以很容易地重现这一点。关于我能在这里做什么的任何指示?

注意:

在重启期间,我有时会看到pre-start脚本中的日志记录,但有时我在重启后根本看不到日志记录,这意味着我的upstart脚本没有被触发。在运行级别上是否需要更改以使其正常工作?

我有一个在Hypervisor中运行的VM,我正在使用Ubuntu。

1 个答案:

答案 0 :(得分:1)

您的流程运行良好,但在系统启动期间,很多事情都是并行的。

IF挂载(使/data文件夹可用)比pre-start script晚运行,您将看不到"结果" pre-start script

我建议提前30点睡觉(BTW 30秒似乎过于宽松):

pre-start script
  sleep 30 # sleep 10 should be enough
  echo "[`date`] Agent Starting" >> /data/agent.log
end script