如何调试 Upstart 脚本?

如何调试 Upstart 脚本?

出于某种原因,我得到了一个apport 升级过程中出错,其原因是

% sudo service apport start
start: Job failed to start

在 sysvinit 下,我可以通过运行以下命令来调试此类问题:

sudo sh -x /etc/init.d/whatever start

但这似乎与 Upstart 不符。我下一步该尝试什么?

事实证明有一个解决方法这将使安装继续进行。但我仍然对如何跟踪脚本这个一般问题感兴趣。

答案1

Upstart 将您的服务执行记录在同名的日志文件中/var/log/upstart/your-service-name.log。这应该会有所帮助。

答案2

以下所有信息(以及更多有用的 Upstart 帮助)均来自新贵食谱. 第 18 节介绍调试。 http://upstart.ubuntu.com/cookbook/#debugging

在跟踪 Upstart 作业的“脚本”节的特定情况下,您应该在“脚本”一词下方添加以下几行:

exec 2>>/dev/.initramfs/myjob.log
set -x

位置奇怪的原因是 /dev/.initramfs/ 在启动初期(在加载根文件系统之前)可用,并且在启动后继续可用。我猜使用 apport 时,您可能不知道需要使用该路径。不过,知道这个选项还是不错的。

还应注意,所有脚本都是以 运行的,set -e因此任何失败的命令都将完全退出脚本。这是有道理的,因为以 root 身份运行脚本时应该非常小心。

我强烈建议从事 Upstart 工作的任何人参考上面链接的 Upstart Cookbook。

相关内容