新贵任务阻止工作开始

upstart task preventing job from starting

我有任务 A 和工作 B。这里有几个过于简单的例子。

任务-a.conf

start on startup and starting job-b
console log
task
script
    logger "hello"
end script

工作-b.conf

start on (runlevel [2345]
          and stopped networking)
stop on starting rc RUNLEVEL=[016]
console log
script
        logger "world"
end script

在作业 B 开始之前,任务 A 需要 运行 一次。当系统启动时,一切正常,任务 A 启动,作业 B 启动。但是当手动停止作业 B 并再次启动它时,它会永远等待。我在这里遗漏了一些东西,但是如何让任务 A 在作业 B 之前触发一次,而不是让作业 B 在额外的 stop/start 操作上被任务 A 永远阻止?我无法更改作业 B 来检查任务 A 是否已停止。在某些实现中,任务 A 可能存在也可能不存在。

这是在 Ubuntu 12.04 上进行的最新更新。谢谢

起始节阻止了我的工作完全开始。在上面给出的例子中,job-b 被阻塞,直到 task-a 完成。不幸的是 task-a 正在等待启动事件,这早已过去了。

解决方案是删除等待启动事件。接下来我想要 task-a 到 运行,但每次启动只有一次。为此,我添加了一个预启动脚本,用于检查 /运行/.task-a 是否存在。如果没有,则任务将 运行 并创建 /运行/.task-a。任何时候 job-b 再次启动时,它都会检查 /运行/.task-a 然后退出,因为它存在。您还可以创建 运行 无限期的作业,请参阅 /etc/init/network-interface-security.conf。

start on startup and starting job-b
console log
task
pre-start script
    if [ -e /var/.$UPSTART_JOB ]; then
        stop; exit 0
    fi
end script

script
     logger "hello"
end script

post-start exec touch /var/.$UPSTART_JOB