crontabの複数のファイルに出力を保存する

crontabの複数のファイルに出力を保存する

crontabにはスケジュールされたスクリプトがあります。

0 2 * * * /usr/local/bin/backup.sh >> /root/output_all.txt

出力を同時に複数のファイル(output_all.txtとoutput_date.txt)に保存したいと思います。

tee出力を複数のファイルに保存するコマンドがあることを知っています。
しかし、teettyが存在する場合にのみ使用できますか?

他の解決策がありますか?

答え1

作品の利用にはtee問題ありません。ttyのオペレーティングシステムと対話するために使用されるデバイスです/dev/tty#

0 2 * * * /usr/local/bin/backup.sh | tee /root/output_all.txt output_date.txt 

出力をファイルに追加して既存のコンテンツを上書きしたくない場合は、次の手順を実行します。

0 2 * * * /usr/local/bin/backup.sh | tee -a /root/output_all.txt output_date.txt

上記の方法はstdoutとファイルに送信されるだけでなく、cronユーザーに電子メールも送信されることに注意してください。

答え2

プロセスは通常、cronセッションまたはターミナル接続セッションを介して実行されているかどうかを知らないため、質問は「出力を複数のファイルに保存」する必要があります。これは実際にはより簡単な側面です。teestdoutをForkに分割するか、より多くのファイルがある場合は、残りの出力はデフォルトでにsendmail移動することを忘れないでください。管理されていないメールボックスを大きくしたくない場合は、パイプの使用を検討してください。これは怠惰なオプションで、|& logger好みの構文に従って設定してから消えるよりも優れています。&>/dev/nullSHELL=/bin/bash

これにより、あなたが犯した間違いが再び発生します。 cron実行プロセスのみが欠落しておりstdin(存在しますが無効です/dev/null)、$DISPLAY暗号化されたプロキシセッションを含むユーザーインターフェイスに参加すると直感的に理解する他のデスクトップ関連リソース。アクティブなユーザーが必要なタスクのみをスケジュールしてみてください。

真剣にcronjobの場合、残りのすべての出力は端末の代わりにメールにルーティングされるため、メールルーティングを設定することをお勧めします。それはすべてです。

関連情報