如何调试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
的相同名称在日志文件中记录您的服务执行。 它应该会有所帮助。