我在 Debian 7.8 系统上安装了 upstart,但上次检查时发现它在 Ubuntu 11 系统上也不起作用。我使用 sudo 运行我的作业,但如果可能的话,我想正确执行。这是我的 .conf 文件:
start on stopped RUNLEVEL=[2345]
stop on runlevel [!2345]
setuid newuser
respawn
pre-start exec logger "pre-start JOB $JOB in HOME $HOME"
script
logger "start JOB $JOB in HOME $HOME"
echo "DEBUG start: `env`" >> /tmp/$JOB_env.log
timeout 360m $HOME/scripts/$JOB.py \
>/tmp/$JOB.log 2>&1 || mail -s "error in $JOB.conf" \
[email protected] < /tmp/$JOB.log
end script
post-stop exec sleep 60
记录器调用完成并产生:
Mar 7 15:56:13 vps39987 logger: pre-start JOB in HOME
Mar 7 15:56:13 vps39987 logger: start JOB in HOME
/tmp 不包含 *_env.log,并且 /var/log/upstart/ 不包含 $JOB 的文件。
我收到电子邮件,主题error in .conf
为timeout: failed to run command '/scripts/.py': No such file or directory
有什么想法吗?我被难住了。
[注意:我注释掉了该setuid
行但仍然没有效果]
答案1
虽然我仍然不知道为什么没有被扩展,但我发现在节中$JOB
使用for line in $(env); do logger env $line; done
script
$UPSTART_JOB
是正在设置。我以另一种特定于我客户设置的方式解决了缺少的 $HOME 变量。