
Upstart proporciona soporte para iniciar trabajos basados en argumentos de eventos:
start on custom-event NAME=foo
Esto sólo iniciará el trabajo cuando custom-event
se emita y el argumento NAME
tenga el valor foo
.
También proporciona una forma de comenzar con un conjunto de argumentos:
start on custom-event QUANTITY=[12]
Esto solo iniciará el trabajo cuando custom-event
el argumento emitido QUANTITY
tenga valor 1
o 2
.
No puedo entender cómo proporcionar un operador de relación:
start on coretemp TEMP>60
stop on coretemp TEMP<50
La idea aquí es comenzar este trabajo (una tarea en realidad) cuando la temperatura del núcleo de la CPU sea demasiado alta.
No me sorprendería que advenedizo todavía no admitiera operadores de relaciones aritméticas. Sin embargo, esta sintaxis tampoco funciona.
start on coretemp TEMP=[60,61,62,63,...,79,80]
stop on coretemp TEMP=[30,31,32,33,...,49,50]
¿Estoy fuera de lugar al tratar de hacer que un advenedizo haga algo que nunca debió hacer?
Hasta ahora, mi única solución viable es hacer que mi demonio de monitoreo de temperatura emita eventos personalizados:
coretemp-above-60
coretemp-below-50
Respuesta1
Para ser franco, me parece que "lo estás haciendo mal". :)
No debería haber lógica de configuración en los scripts de inicio, debería estar en los archivos de configuración. Por lo tanto, su demonio de monitoreo de temperatura debería emitir coretemp-too-hot
y coretemp-nominal
tener un archivo de configuración que especifique cuál es el punto de interrupción. De esa manera, simplemente cambia los valores en el archivo de configuración (un lugar donde varias aplicaciones pueden verlo, si es necesario) en lugar de tener que editar sus archivos iniciales.
O si quieres ignorarme (¡por tu propia cuenta!), puedes intentar:
start on coretemp TEMP=[678][0123456789]
stop on coretemp TEMP=[34][0123456789]
que es lo más cerca que creo que podrás llegar.
Respuesta2
Todavía me gustaría tener operadores relacionales para usar con start/stop on
las condiciones de Upstart. Sin embargo, parece que estaba pensando demasiado en el problema.
Mi solución fue hacer que el demonio de monitoreo de temperatura emitiera un evento coretemp con cada grado de cambio. es decir, si la temperatura salta de 50° a 55°, el demonio emite 51, 52, 53, 54 y 55. Entonces la start on
condición para el programa de asado se vuelve simple.
start on coretemp TEMPERATURE=60
stop on coretemp TEMPERATURE=50
exec cpuroast
El único inconveniente es que al inicio el guión explota un montón de eventos de temperatura. En mi caso todas las temperaturas entre 25° y la temperatura inicial. Tengo que hacer esto en caso de que el sistema se inicie cuando la temperatura ambiente sea superior a 60°.