
write-date.sh
私は、単に日付をファイルに書き込む、という単純な bash スクリプトを作成しました。
#!/bin/bash
echo "$(date) Write Done" >> write-date.log
そして、私は次のように 60 秒ごとに bash スクリプトを実行しています。
watch -n 60 ./write-date.sh
ただし、コマンドを実行すると、ファイルに生成される出力には、write-date.log
次のスニペットのような出力が含まれます。
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
ご覧のとおり、日付が 1 分間に複数回ログ ファイルに書き込まれることがあります (このサンプル スニペットでは 09:42 と 09:43)。その理由がわかりません... watch コマンドが間違っているのでしょうか? bash スクリプト自体が間違っているのでしょうか? どこかにシステム クロックの問題がありますか?
OSはUbuntu 20.04ですuname -a
。
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
また、このスクリプトの理由は、OS のルート ファイル システムが数時間ごと、または場合によっては数日ごとに読み取り専用モードになるという問題が発生しているためであり、この問題が発生する日時を調べて、後でその時間帯を調べて、/var/log/syslog
その時間帯にシステムに何か異常が発生していないかどうかを確認しようとしていることも指摘しておく必要があります。
- - アップデート - -
コマンドの実行を停止し、ログ ファイルをクリアして、コマンドを最初から再度実行すると、予想どおりに 1 分ごとに日付が記録されるようになりました。
コメントで指摘されているように、重複して印刷されたログは、以前の怪しいスクリプトの実行によるものかもしれません (おそらくユーザー エラー)。しかし、いつ、どのように発生したのかはわかりません。いずれにせよ、数時間/数日間実行され続けるので、監視します。