upstart任务阻止作业启动

时间:2015-08-04 17:33:28

标签: ubuntu task jobs upstart

我有任务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

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

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

1 个答案:

答案 0 :(得分:0)

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

解决方案是删除等待启动事件。接下来我想要task-a运行,但每次启动只需要一次。为此我添加了一个预启动脚本,检查是否存在/run/.task-a。如果没有,则任务将运行并创建/run/.task-a。任何时候job-b会再次启动,它会检查/run/.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