5日以上経過したファイルを削除するCRONTABジョブのパイプラインコマンド出力[閉じる]

5日以上経過したファイルを削除するCRONTABジョブのパイプラインコマンド出力[閉じる]

CRONTABジョブを実行して、フォルダから5日以上経過したファイルを削除したいと思います。エラーを防ぐために、コマンド出力をファイルに転送します。

コマンドラインから実行すると、このコマンドはファイルを削除します。

/usr/bin/find /mnt/SQL_Backups/* -mtime +5 -exec rm {} \;

しかし、stdoutパイプとstderrパイプを取得するために追加すると失敗します。

/usr/bin/find /mnt/SQL_Backups/* -mtime +5 -exec rm {} \; > /mnt/output/CRONDeleteFiles.txt 2>$1

コマンドラインでエラーは次のとおりです。

-bash: $1: あいまいなリダイレクト

CRONTAB Eメールエラーメッセージでこのエラーが発生します。

/bin/sh: 1: 生成できません: ディレクトリが存在しません。

これが私のパイプラインコードに関連していると思われますか?

これを行う正しい方法は何ですか?

答え1

stderrはあなたの例とは2>&1異なり、stdoutにリダイレクトされます。2>$1

答え2

ロガーに書くことができます。

find /mnt/SQL_Backups/* -mtime +5 -print -delete 2>&1 | logger -t rmsqlbackups

私のシステムには優先順位や機能(たとえば)がないため、システムに-p user.info書き込まれます/var/log/messages2>&1キャプチャ標準エラーまた標準出力

>>または、独自の方法でファイルに書き込みます。ただし、出力()の代わりに追加()が必要になる場合がありますが、>ここではすべての出力の前に現在の日付/時刻を追加して次のことを確認できます。

( date; find /mnt/SQL_Backups/* -mtime +5 -print -delete; echo ) >> /mnt/output/CRONDeleteFiles.txt 2>&1

関連情報