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


9

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

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

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


crontabの「%」文字をエスケープすることを忘れないでください!+%d-%m-%y/%H:%M:%S次のようになります:+\%d-\%m-\%y/\%H:\%M:\%S
Vylmarion

回答:



5

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

ファイルにタイムスタンプを追加するには、詳細を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

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


これは受け入れられる答えになるはずです
ドミニク

1

(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
うまくいきませんでした。Ubuntu16.04を使用しています。インストールしましたmoreutils
Hamman Samuel

0

シェルスクリプトを実行しているので、次のような行を追加してみませんか。

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の前後に行を追加します


echo `date -u`と同じではありませんdata -uか?
Stephen Rauch

エコーは改行AIUIを追加します。
pbhj

-2

これらの2つ「>」を使用して、ファイルに何かを追加できます。

$ echo "test" >> test.txt
$ echo "test" >> test.txt

$ cat test.txt
test
test

2
タイムスタンプはどうですか
user3004356
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.