Назад | Перейти на главную страницу

Событие выскочки в зависимости от уровня

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

Идея здесь состоит в том, чтобы запустить эту работу (на самом деле задачу), когда временная температура ядра процессора становится слишком большой.

Я не удивлюсь, если выскочка еще не поддержала операторы арифметических отношений. Однако этот синтаксис тоже не работает.

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

Мне кажется, если быть откровенным: «Ты делаешь это неправильно». :)

В сценариях запуска не должно быть логики конфигурации - она ​​должна быть в файлах конфигурации. Итак, ваш демон контроля температуры должен выдать coretemp-too-hot и coretemp-nominal и иметь файл конфигурации, в котором указывается точка останова для этого. Таким образом, вы просто меняете значения в файле конфигурации (одно место, где несколько приложений могут просматривать его, если это необходимо) вместо того, чтобы редактировать файлы выскочки.

Или, если вы хотите игнорировать меня (пусть даже на своей голове!), Вы можете попробовать:

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

что примерно так близко, как я думаю, вы сможете добраться.

Я все еще хотел бы иметь реляционные операторы для использования с 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 °.