De qualquer maneira no Bash para gravar em um arquivo a cada X segundos sem fechá-lo?

3

O watchdog de hardware no meu sistema precisa de 0 gravado em /dev/watchdog em intervalo menor que 60 segundos ou ele será acionado. O identificador de arquivo deve ser mantido aberto no entanto ou o watchdog é desativado.

Por exemplo,

echo "0" > /dev/watchdog

não funciona, pois o identificador de arquivo é fechado depois que o eco é concluído.

Existe alguma maneira de configurar um loop no bash que irá gravar 0 periodicamente em /dev/watchdog , mas manterá o identificador de arquivos aberto?

    
por fred basset 02.06.2014 / 05:48

2 respostas

6
while true; do
  echo "0"
  sleep 30
done > /dev/watchdog
    
por 02.06.2014 / 05:57
4

Parece que você quer um daemon:

while sleep 50; do
    echo 0
done > /dev/watchdog

O identificador de arquivo aqui não será fechado até que o loop seja concluído. Observe que, se a execução ficar bloqueada por > 10 segundos por algum motivo, isso poderá falhar. É improvável que isso aconteça, mas é tecnicamente viável.

Você faria melhor em escrever uma condição while que também inclua as condições para sua falha no watchdog.

    
por 02.06.2014 / 05:58