名前にタイムスタンプを含むファイルにcron出力を送信する


38

私はLAMPのセットアップでこのようなcrontabを持っています:

0 0 * * * /some/path/to/a/file.php > $HOME/cron.log 2>&1

これにより、ファイルの出力がcron.logに書き込まれます。ただし、再度実行すると、ファイルに以前あったものはすべて上書きされます。

ファイル名にタイムスタンプを含むファイルに cronを出力するにはどうすればよいですか?

ファイル名の例は次のようになります:2010-02-26-000000-cron.log

何らかの種類のタイムスタンプがある限り、この形式はあまり気にしません。

前もって感謝します。


8
$HOME/cron.log上書きされたくない場合は、使用し>>ないでください>
デイブチェイニー

回答:


66

試してください:

0 0 * * * /some/path/to/a/file.php > $HOME/`date +\%Y\%m\%d\%H\%M\%S`-cron.log 2>&1

必要に応じて、日付形式を試してください。上記の%ように\%、必ずエスケープしてください。


そして、一般的に0 0 * * * /some/path/to/a/file.php > $HOME/scriptname-日付+ \%Y \%m \%d \%H \%M \%Sのようなファイル名へのアプローチを提案させてください。.log
クリスチャン

あなたがそれをもう少し人間が読めるようにする必要がある場合: date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cron.log
DevilCode

4
@DevilCode、はい、ファイル名のスペースはUnixではあまり一般的ではありませんが。ハイフンまたはアンダースコアのほうが適切なオプションですdate +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log
分裂

1
それらの恐ろしいエスケープ文字は常に私を取得します。念押し有難う!
トニーカフェ

14

ここで説明するように、タイムスタンプを使用してすべてを同じファイルに保存することを強くお勧めします。

取り除く

2>&1

ログファイルに保存する前に、タイムスタンプスクリプトを介して実行します(上記のリンクで説明)。




-2

この問題を解決しました。日付コマンドの前に日付パス(/ bin / date)を追加するだけです。


2
さらに情報と例を追加してください。
ダニエル

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