Bash - Como enviar dois comandos para o arquivo?

2

Eu quero enviar dois comandos para um arquivo. Eu quero a hora exata (data) e temperatura (sensores) para ir para o arquivo a cada 5 minutos. Eu sei como enviar um comando para um arquivo, mas dois? Como escrever esse roteiro?

    
por amorfis 14.08.2009 / 00:35

5 respostas

12

Algo como isso? (Em um loop, cron ou o que você estiver usando atualmente.)

(date; my_sensor_command) >> log_file
    
por 14.08.2009 / 00:44
8

Agrupe todos os comandos entre parênteses, porque isso os executará em uma sub-shell da qual você pode redirecionar facilmente a saída:

 while sleep 5m
 do
         (date +%Y-%m-%d_%H:%M | tr -d '2'; echo -n ' '; \
         /etc/rc.d/init.d/lm_sensors status | grep '^CPU Temp') >> /your/log/file

 done
    
por 14.08.2009 / 00:44
4

Se eu entendi sua pergunta corretamente - você deseja enviar dois valores para o mesmo arquivo -, isso pode ser o que você está procurando:

TIME="'date'"
SENSOR="56"

echo "$TIME $SENSOR" >> /path/to/a/file
    
por 14.08.2009 / 00:43
2

Talvez eu esteja interpretando mal a pergunta, mas parece que todas as respostas estão anexando a um arquivo. Eu li sua pergunta para ser que você quer o mesmo resultado em 2 arquivos. Se é isso que você está procurando, tee é uma maneira de conseguir isso:

echo "Stuff to output"|tee -a file1 file2

    
por 14.08.2009 / 02:01
1

Referindo-se a hlovdal post, você pode definir um cron assim:


$ crontab -e

*/5 * * * * (echo date +%Y%m%d%H%M%S | tr -d '2'; echo -n ' '; sensors | grep "CPU Temp:" | awk '{ print $3 }' )>> /var/log/sensors.log

    
por 14.08.2009 / 04:15