web-dev-qa-db-ja.com

タイムスタンプ付きでcrontabにログを追加する方法

Crontabでは、毎日のバックアップスクリプトをスケジュールしました。これで、cronがスクリプトを実行すると、次のようにステータスがログファイルに記録されます。

0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1  

現在、cronがスクリプトを実行すると、ログの内容が毎回更新されます。そのため、実行時間のタイムスタンプを使用して同じファイルにコンテンツを追加し、既存のコンテンツとともに各時間のコンテンツの下に追加する必要があります。これどうやってするの。

9
user3004356

ファイルのタイムスタンプを取得する方法

ファイルにタイムスタンプを追加するには、dateを使用できます。詳細については、man dateを参照してください。たとえば、ターミナルで使用すると、次のような出力が得られます。

$ date +%d-%m-%y/%H:%M:%S
19-12-13/09:14:42

出力はdd-mm-yy/hour:min:secの形式です

タイムスタンプをファイルに入れたい場合は、

date +%d-%m-%y/%H:%M:%S > filename

リダイレクト

date +%d-%m-%y/%H:%M:%S > filenameを使用すると、日付はファイルに保存されますが、コマンドを使用するたびに上書きされます。既存のファイルに追加するには、

date +%d-%m-%y/%H:%M:%S >> filename

既存のファイルの最後に最後の実行出力が追加されます。

あなたのケースであなたがすること

/home/backup.shの最後に次の行を追加できます。

date +%d-%m-%y/%H:%M:%S

そして、crontabで次を使用します。

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

上記の変更はあなたが望むことをすべきだと思います。

5
souravc

どうして

0 * * * * (/bin/date && /home/backup.sh) >> /var/log/backup.log 2>&1

5

(Debian Jessieの場合)tsパッケージの一部であるmoreutilsコマンドを使用します。例えば。:

0 0 * * * /home/backup.sh | ts '[%Y-%m-%d %H:%M:%S]' > /home/groupz/db-backup/fbackup.log 2>&1  

これにより、出力のすべての行にタイムスタンプが追加され、ログに保存されます。

1
Simon Woodside

シェルスクリプトを実行しているので、次のような行を追加してください。

some ./script    
echo `date -u `
some ./other/script

あなたのスクリプト、すなわち/home/backup.sh

それから

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

thu Jun 14 11:10:22 UTC 2018のようなfbackup.logの前後に行を追加します

0
Nihal Sangeeth