Eu ainda sou um novato de linux de alimentação de garrafa, então vá fácil. Eu pesquisei até aqui, mas não consegui encontrar a resposta.
Estou executando um programa que gera dados csv e canaliza para log.csv
Estou procurando uma maneira de ter a saída canalizada contendo a data / hora em que ela foi criada.
Neste exato momento, o comando se parece com isso (chave de mão todas as manhãs, sem crontab até que eu consiga este trabalho)
rtlamr -format=csv -msgtype=scm | tee /home/jonboy545/energy/logs/3-16-18_7_30.csv
Estou usando | tee
, então ainda posso ver a saída no terminal, bem como registrar o arquivo.
Então, como canalizar a saída para um nome de arquivo dinâmico? Eu tenho um script bash simples que irá produzir texto, mas como eu digo rtlamr para | um script bash para gerar um nome de arquivo?
Aqui está o script chamado "log_energy.sh" para criar o nome do arquivo de texto:
#!/bin/bash
today='date '+%m_%d__%H_%M_%S'';
filename="/home/jonboy545/energy/logs/$today.csv"
echo $filename;
Se você executar ./log_energy.sh
, ele exibirá o texto como esperado:
/home/jonboy545/energy/logs/03_16__17_30_39.csv
Então meu pensamento estúpido é algo assim (o que obviamente não funciona)
rtlamr -format=csv -msgtype=scm | tee /home/jonboy545/./log_energy.sh
Agora que penso nisso, pode ser mais fácil criar um script que faça tudo isso. Então, algo assim?
#!/bin/bash
today='date '+%m_%d__%H_%M_%S'';
filename="/home/jonboy545/energy/logs/$today.txt"
/usr/bin/rtlamr -format=csv -msgtype=scm | tee $filename;
Pensando que posso ter acabado de responder meu próprio post, mas tenho certeza de que o script acima tem algo errado com ele.