Registrando em um novo arquivo para um script de execução contínua

0

Eu tenho um script fornecendo login continuamente (como 2-3 páginas em um segundo). Eu estava usando abaixo de um forro.

sh myscript.sh > /home/user/mylog

Estou executando outro script para compactar este arquivo quando ele atingir 100 MB e criar um novo arquivo.

gzip /home/user/mylog;touch /home/user/mylog

Mas acho que estou perdendo alguns logs no tempo entre os comandos gzip e touch . Alguém pode sugerir uma prática recomendada para NÃO perder nenhum registro?

    
por prado 08.12.2016 / 19:47

1 resposta

0

Em vez de zipar o arquivo enquanto ele está sendo gravado, mova-o para fora do caminho e, em seguida, feche o arquivo estático ...

mv / home / usuário / mylog /home/user/mylog.0; gzip /home/user/mylog.0

Você não deve precisar do toque, enquanto o script é executado, se o arquivo de log desaparecer, ele deverá criá-lo sozinho.

Aqui está um teste: Execute este script ... for (( ; ; )); do echo "123" >> test.log; sleep 1; done

mova o arquivo para um novo nome .... mv test.log test.log.0

O novo test.log é criado automaticamente, supondo que o script ainda esteja em execução.

Tente isso no loop While. Funcionou quando eu testei.

while true;do
  exec 3>&1 1>>time.logger 2>&1
  date;
  #other stuff...
done
    
por 08.12.2016 / 20:30