如何调试Upstart脚本?

出于某种原因,我在apport升级期间遇到错误 ,其原因是

% sudo service apport start start: Job failed to start 

在sysvinit下,我可以通过运行eg来调试这种问题

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

但这似乎并没有映射到Upstart。 我接下来应该尝试什么?

事实certificate, 有一种解决方法可以让安装继续进行。 但我仍然对如何跟踪脚本的一般问题感兴趣。

所有以下信息(以及非常有用的Upstart帮助)来自The Upstart Cookbook 。 第18节涉及调试。 http://upstart.ubuntu.com/cookbook/#debugging

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

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

奇怪位置的原因是/dev/.initramfs/在非常早期启动时可用,在加载根文件系统之前,并且在启动后继续可用。 我猜apport,但是,你可能不需要使用那条路径。 不过,知道这个选项真好。

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

我强烈建议您咨询上面链接的Upstart Cookbook,以便任何使用Upstart工作的人。

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