如何调试间歇性失败的 upstart 脚本?
How to debug an upstart script that intermittently fails?
我有一个进程,我想在我的系统通过任何方式 rebooted
时立即启动,所以我为此使用了 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 脚本没有被触发。我需要在运行级别上更改什么才能使其正常工作吗?
我在管理程序中有一个 运行 的虚拟机,我正在使用 Ubuntu。
你的过程 运行 很好,但是在系统启动期间许多事情并行进行。
如果挂载(使 /data
文件夹可用)比您的 pre-start script
运行得晚,您将看不到 pre-start script
的 "results"。
我建议将睡眠提前 30 秒(顺便说一句,30 秒似乎太长了):
pre-start script
sleep 30 # sleep 10 should be enough
echo "[`date`] Agent Starting" >> /data/agent.log
end script
我有一个进程,我想在我的系统通过任何方式 rebooted
时立即启动,所以我为此使用了 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 脚本没有被触发。我需要在运行级别上更改什么才能使其正常工作吗?
我在管理程序中有一个 运行 的虚拟机,我正在使用 Ubuntu。
你的过程 运行 很好,但是在系统启动期间许多事情并行进行。
如果挂载(使 /data
文件夹可用)比您的 pre-start script
运行得晚,您将看不到 pre-start script
的 "results"。
我建议将睡眠提前 30 秒(顺便说一句,30 秒似乎太长了):
pre-start script
sleep 30 # sleep 10 should be enough
echo "[`date`] Agent Starting" >> /data/agent.log
end script