出于某种原因,我得到了一个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。