
Eu escrevi um script bash simples chamado write-date.sh
que simplesmente grava a data em um arquivo:
#!/bin/bash
echo "$(date) Write Done" >> write-date.log
E estou executando o script bash a cada 60 segundos assim:
watch -n 60 ./write-date.sh
No entanto, quando executo o comando, a saída produzida no write-date.log
arquivo contém a saída como no trecho aqui:
Thu 1 Jul 09:42:03 BST 2021 Write Done
Thu 1 Jul 09:42:03 BST 2021 Write Done
Thu 1 Jul 09:42:03 BST 2021 Write Done
Thu 1 Jul 09:42:03 BST 2021 Write Done
Thu 1 Jul 09:42:03 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:42:04 BST 2021 Write Done
Thu 1 Jul 09:43:04 BST 2021 Write Done
Thu 1 Jul 09:43:26 BST 2021 Write Done
Thu 1 Jul 09:44:26 BST 2021 Write Done
Thu 1 Jul 09:45:26 BST 2021 Write Done
Thu 1 Jul 09:46:26 BST 2021 Write Done
Thu 1 Jul 09:47:26 BST 2021 Write Done
Thu 1 Jul 09:48:26 BST 2021 Write Done
Como pode ser visto, há momentos em que a data é gravada no arquivo de log mais de uma vez por minuto (às 09:42 e 09:43 neste trecho de exemplo) e não consigo entender por que isso pode ser... é o comando watch está errado? O próprio script bash está errado? Existe um problema no relógio do sistema em algum lugar?
O sistema operacional é Ubuntu 20.04 onde uname -a
está:
Linux machine 5.4.0-77-generic #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Devo também salientar que a razão para este script é que estou tendo um problema em que o sistema de arquivos raiz do sistema operacional entra no modo somente leitura a cada poucas horas ou às vezes a cada poucos dias e por isso estou tentando descobrir o dia e hora quando isso acontecer, para que mais tarde eu possa /var/log/syslog
verificar se algo estranho aconteceu com o sistema naquele momento.
--- ATUALIZAR ---
Parei de executar o comando e limpei o arquivo de log e executei novamente o comando do zero e agora a data é registrada uma vez por minuto, como seria de esperar.
Conforme apontado nos comentários, os logs duplicados impressos podem ter sido de uma execução anterior de script duvidoso (provavelmente erro do usuário), mas não consigo imaginar como ou quando isso pode ter acontecido. Continuará funcionando por horas/dias de qualquer maneira, então fique de olho nele.