如何调试暴发户作业?


10

我在从事以下工作/etc/init/collector

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

当我使用开始工作时sudo service collector start,它挂起了。如果我ctrl-c跑步initctl list,我会看到:

collector start/killed, process 616

twistd在ps 中看不到该守护程序的实例,并且它应该提供的HTTP服务器不存在。

我什至没有使用“期望守护程序” script,而是使用节对一个单行bash脚本进行了简单的调用,但仍无法正常工作。我想我做错了什么。会是什么呢?


没有答案,但是我正在努力解决类似的问题。它甚至可能是Upstart中的一个错误:bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313我不知道如何从挂起状态获取信息,然后重新启动。我也相信这与expect daemon生产线有关。
损害

Answers:


14

您可以重定向stdoutstderr使用整个外壳的script编译(代替exec)结合exec >FILE 2>&1,就像这样:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

希望可以让您更好地了解正在发生的事情。我发现这对于在我的新贵脚本中捕获各种问题很有用。您可以直接通过管道传递stdout/ 的命令stderr,但是会错过源自shell的错误(例如语法错误)。

另一方面,如果service挂起了,它甚至可能没有命中您的脚本,在这种情况下,这当然无济于事。


谢谢,这使我步入正轨。最后,我将输出通过管道传输到logger,以便可以拖尾/var/log/syslog
Cera

此外,conf文件本身中的错误在中显示dmesg。当我使用上面的方法没有得到任何输出之后,我发现了这一点。我在chdir指令中输入了错误。
–codingFoo

您将代码放在哪里?
kev


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.