
crontabにはスケジュールされたスクリプトがあります。
0 2 * * * /usr/local/bin/backup.sh >> /root/output_all.txt
出力を同時に複数のファイル(output_all.txtとoutput_date.txt)に保存したいと思います。
tee
出力を複数のファイルに保存するコマンドがあることを知っています。
しかし、tee
ttyが存在する場合にのみ使用できますか?
他の解決策がありますか?
答え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セッションまたはターミナル接続セッションを介して実行されているかどうかを知らないため、質問は「出力を複数のファイルに保存」する必要があります。これは実際にはより簡単な側面です。tee
stdoutをForkに分割するか、より多くのファイルがある場合は、残りの出力はデフォルトでにsendmail
移動することを忘れないでください。管理されていないメールボックスを大きくしたくない場合は、パイプの使用を検討してください。これは怠惰なオプションで、|& logger
好みの構文に従って設定してから消えるよりも優れています。&>/dev/null
SHELL=/bin/bash
これにより、あなたが犯した間違いが再び発生します。 cron実行プロセスのみが欠落しておりstdin
(存在しますが無効です/dev/null
)、$DISPLAY
暗号化されたプロキシセッションを含むユーザーインターフェイスに参加すると直感的に理解する他のデスクトップ関連リソース。アクティブなユーザーが必要なタスクのみをスケジュールしてみてください。
真剣にcronjobの場合、残りのすべての出力は端末の代わりにメールにルーティングされるため、メールルーティングを設定することをお勧めします。それはすべてです。