我编写了一个简单的 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 作业进行故障排除时,需要检查一些事项。
检查 upstart 作业是否正确。你的作业看起来不错,但我建议使用 python 可执行文件的完整路径 ( /usr/bin/python )。
检查 upstart 作业日志。每个作业都有一个日志文件,位于 /var/log/upstart/.log 您的作业可能正在启动但因某种原因失败(也许 pusher.py 需要网络启动),此日志文件可能包含相关信息。至少,它会显示作业是否正在尝试启动。