基於層級的新貴事件

基於層級的新貴事件

Upstart 提供基於事件參數啟動作業的支援:

start on custom-event NAME=foo

custom-event這只會在發出並且參數NAME具有值時啟動作業foo

它還提供了啟動一組參數的方法:

start on custom-event QUANTITY=[12]

custom-event只有當發出的參數QUANTITY具有 value1或 時,才會啟動作業2

我不知道如何提供關係運算符:

start on coretemp TEMP>60
stop on  coretemp TEMP<50

這裡的想法是當 cpu 核心溫度變得太大時啟動這項工作(實際上是一個任務)。

如果 upstart 還不支援算術關係運算符,我不會感到驚訝。然而這個語法也不起作用。

start on coretemp TEMP=[60,61,62,63,...,79,80]
stop on  coretemp TEMP=[30,31,32,33,...,49,50]

我是不是太離譜了,試圖讓暴發戶做一些它從未打算做的事情?

到目前為止,我唯一可行的解​​決方案是讓我的溫度監控守護程式發出自訂事件:

coretemp-above-60
coretemp-below-50

答案1

坦白說,在我看來,“你做錯了。” :)

啟動腳本中不應該有配置邏輯 - 它應該在設定檔中。所以你的溫度監控守護程式應該發出coretemp-too-hotcoretemp-nominal有一個設定檔來指定斷點是什麼。這樣,您只需更改設定檔中的值(如果需要,多個應用程式可以查看該檔案的一個位置),而不必編輯您的新貴檔案。

或者,如果您想忽略我(就您自己而言!),您可以嘗試:

start on coretemp TEMP=[678][0123456789]
stop on coretemp  TEMP=[34][0123456789]

這是我認為你能夠得到的最接近的結果。

答案2

我仍然希望將關係運算子與 Upstart 的start/stop on條件一起使用。不過,看來我對這個問題想太多了。

我的解決方案是讓溫度監控守護程式在每次變化時發出 coretemp 事件。也就是如果溫度從 50° 跳到 55°,守護程式會發出 51、52、53、54 和 55 start on

start on coretemp TEMPERATURE=60
stop on coretemp TEMPERATURE=50
exec cpuroast

唯一的缺點是在啟動時腳本會拋出一堆溫度事件。就我而言,所有溫度都在 25° 和初始溫度之間。我必須這樣做,以防系統在環境溫度高於 60° 時啟動。

相關內容