服务在调用时启动,但不在启动时启动

服务在调用时启动,但不在启动时启动

我编写了一个简单的 upstart 脚本来启动一个 python 程序,我将它保存为vgpusher.conf

它不会自动启动,但如果我运行,sudo start vgpusher它就会启动并正常运行。

代码很简单:

description "vgpush"

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

script
    cd /home/computer/
    python pusher.py
end script

我将脚本放在了 中/etc/init。除此之外,我没有做任何配置。

该机器正在运行 Ubuntu 10.04 Server。

我是否需要采取额外步骤才能在启动时启动该服务?

答案1

首先,您不需要脚本:

description "vgpush"

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

chdir /home/computer
exec python pusher.py

其次,记录输出可能会有所帮助。如果您升级到 12.04(强烈推荐!),您将在 /var/log/upstart/$jobname.log 中有一个日志。对于 10.04,您必须手动执行此操作:

description "vgpush"

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

chdir /home/computer
exec python pusher.py 2>&1 >> /var/log/vgpush.log

这可能提供了一些线索。如果我不得不猜测,这是因为 vgpush 需要一个网络接口启动,但该接口没有启动,而 10.04 在所有网络接口准备就绪之前就启动了运行级别 2。

答案2

在对 upstart 作业进行故障排除时,需要检查一些事项。

  1. 检查 upstart 作业是否正确。你的作业看起来不错,但我建议使用 python 可执行文件的完整路径 ( /usr/bin/python )。

  2. 检查 upstart 作业日志。每个作业都有一个日志文件,位于 /var/log/upstart/.log 您的作业可能正在启动但因某种原因失败(也许 pusher.py 需要网络启动),此日志文件可能包含相关信息。至少,它会显示作业是否正在尝试启动。

相关内容