
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-hot
並coretemp-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° 時啟動。