Upstart基于事件参数提供对启动作业的支持:
start on custom-event NAME=foo
这只会在发出custom-event并且参数NAME的值为foo时才开始工作。
它也提供了一系列的参数:
start on custom-event QUANTITY=[12]
这只会在custom-event时开始工作参数QUANTITY值为1或2 。
我无法弄清楚如何提供一个关系运算符:
start on coretemp TEMP>60 stop on coretemp TEMP<50
这里的想法是开始这个工作(真的是一个任务),当CPU核心温度变得太大。
如果新贵还不支持算术关系运算符,我不会感到惊讶。 但是,这个语法也不起作用。
start on coretemp TEMP=[60,61,62,63,...,79,80] stop on coretemp TEMP=[30,31,32,33,...,49,50]
我的基地,试图让新贵做一些它从来没有做的事情?
到目前为止,我唯一可行的解决scheme是让我的温度监控守护进程发出自定义事件:
coretemp-above-60 coretemp-below-50
在我看来,直截了当,“你做错了。” 🙂
启动脚本中不应该有configuration逻辑 – 它应该在configuration文件中。 所以你的温度监控守护进程应该发出coretemp-too-hot和coretemp-nominal并且有一个configuration文件来指定它的断点。 这样,你只需要改变configuration文件中的值(如果需要的话,多个应用程序可以查看的地方),而不必编辑你的暴发户文件。
或者,如果你不理睬我(在你自己的头上!),你可以试试:
start on coretemp TEMP=[678][0123456789] stop on coretemp TEMP=[34][0123456789]
这与我认为你将能够得到的距离差不多。
我仍然希望有关系运营商使用Upstart的start/stop on条件。 但是,看起来我正在想这个问题。
我的解决scheme是让温度监视守护进程发出每个变化程度的coretemp事件。 即,如果温度从50°跳变到55°,则守护进程发出51,52,53,54和55.然后,烘烤程序的start on条件变得简单
start on coretemp TEMPERATURE=60 stop on coretemp TEMPERATURE=50 exec cpuroast
唯一的缺点是,在启动脚本爆炸一堆温度事件。 在我的情况下,所有的温度在25°和初始温度之间。 当环境温度高于60°时,系统启动时必须这样做。