基于级别的暴发事件

Upstart基于事件参数提供对启动作业的支持:

start on custom-event NAME=foo 

这只会在发出custom-event并且参数NAME的值为foo时才开始工作。

它也提供了一系列的参数:

 start on custom-event QUANTITY=[12] 

这只会在custom-event时开始工作参数QUANTITY值为12

我无法弄清楚如何提供一个关系运算符:

 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-hotcoretemp-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°时,系统启动时必须这样做。