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

标签 linux ubuntu-14.04 ubuntu-12.04 boot upstart

我有一个进程,我想在我的系统以任何方式重新启动后立即启动,所以我为此使用了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/

相关文章:

c - 获取相邻设备的接收信号强度

c - 文件大小超过缓冲区大小

git - 为什么 Ubuntu 机器无法访问 Github?

python-3.x - 一步步: Installing Python 3. 3、Ubuntu 12.04上的Lighttpd & Pymongo

linux - 如何在嵌入式Linux中管理或解决SPI中断日志

linux - VSCode,如何更改默认终端?

java - Derby Pool ping 在 Glassfish 中因 java.net.ConnectException 而失败

ubuntu - tomcat 9 无法在 Ubuntu 14.04 上启动,卡在停止/等待状态

C++ Boost 库几何.hpp

linux - 在项目目录中使用 wmake 时出错