Evento Upstart baseado em nível

2

O Upstart fornece suporte para iniciar tarefas com base em argumentos de eventos:

start on custom-event NAME=foo

Isso só iniciará o trabalho quando custom-event for emitido e o argumento NAME tiver o valor foo .

Ele também fornece uma maneira de iniciar um conjunto de argumentos:

start on custom-event QUANTITY=[12]

Isso só iniciará o trabalho quando custom-event for emitido. O argumento QUANTITY tem valor 1 ou 2 .

Não consigo descobrir como fornecer um operador de relação:

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

A idéia aqui é iniciar este trabalho (uma tarefa realmente) quando a temperatura central da CPU ficar muito grande.

Eu não ficaria surpreso se o upstart ainda não suportasse operadores de relações aritméticas. No entanto, esta sintaxe também não funciona.

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

Eu estou fora da base, tentando fazer algo que nunca foi feito?

Até agora, minha única solução viável é fazer com que meu daemon de monitoramento de temperatura emita eventos personalizados:

coretemp-above-60
coretemp-below-50
    
por deft_code 12.08.2010 / 00:38

2 respostas

0

Eu ainda gostaria de ter operadores relacionais para usar com as condições start/stop on do Upstart. No entanto, parece que eu estava pensando sobre o problema.

Minha solução foi fazer com que o daemon de monitoração de temperatura emitisse um evento coretemp com cada grau de mudança. Por exemplo, se a temperatura aumentar de 50 ° para 55 °, o daemon emite 51, 52, 53, 54 e 55. Em seguida, a condição start on para o programa assado se torna simples

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

A única desvantagem é que no início o script explode um monte de eventos de temperatura. No meu caso, todos os temps entre 25 ° e temp inicial. Eu tenho que fazer isso no caso do sistema ser inicializado quando a temperatura ambiente estiver acima de 60 °.

    
por 24.08.2010 / 03:16
1

Parece-me, para ser franco: "Você está fazendo errado." :)

Não deve haver lógica de configuração nos scripts de inicialização - deve estar nos arquivos de configuração. Portanto, seu daemon de monitoramento de temperatura deve emitir coretemp-too-hot e coretemp-nominal e ter um arquivo de configuração que especifique qual é o ponto de interrupção para isso. Dessa forma, você apenas altera os valores no arquivo de configuração (um lugar que vários aplicativos podem examiná-lo, se necessário), em vez de precisar editar seus arquivos iniciados.

Ou se você quiser me ignorar (por conta própria, seja!), você pode tentar:

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

que é o mais próximo que eu acho que você conseguirá.

    
por 17.08.2010 / 18:12