我有一个进程,我想在我的系统以任何方式重新启动
后立即启动,所以我为此使用了upstart
脚本,但有时我注意到的是我的进程在硬重启期间没有启动(关闭并启动机器)所以我认为我的 upstart 脚本在硬重启后没有被启动。我相信硬重启没有运行级别。
我很困惑为什么有时在重新启动期间它可以工作,但有时却不起作用。我该如何调试它?
下面是我的 upstart 脚本:
# 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。
最佳答案
您的进程运行良好,但在系统启动期间许多事情并行进行。
如果挂载(使 /data
文件夹可用)比您的 pre-start 脚本
运行得晚,您将看不到 pre- 的“结果”启动脚本
。
我建议将 sleep 提前 30 秒(顺便说一句,30 秒似乎太长了):
pre-start script
sleep 30 # sleep 10 should be enough
echo "[`date`] Agent Starting" >> /data/agent.log
end script
关于linux - 如何调试间歇性失败的 upstart 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800633/