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

joh*_*ohn 6 linux boot upstart ubuntu-12.04 ubuntu-14.04

我有一个进程,我想尽快开始我的系统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
Run Code Online (Sandbox Code Playgroud)

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

注意:

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

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

小智 1

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

如果安装(使/data文件夹可用)运行时间晚于您,pre-start script您将看不到 的“结果” pre-start script

我建议将睡眠提前 30 秒(顺便说一句,30 秒似乎太长了):

pre-start script
  sleep 30 # sleep 10 should be enough
  echo "[`date`] Agent Starting" >> /data/agent.log
end script
Run Code Online (Sandbox Code Playgroud)