Evento advenedizo basado en el nivel

Evento advenedizo basado en el nivel

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-eventse emita y el argumento NAMEtenga 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-eventel argumento emitido QUANTITYtenga valor 1o 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-hoty coretemp-nominaltener 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 onlas 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 oncondició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°.

información relacionada