web-dev-qa-db-ja.com

cronが完了したら電子メール通知を取得してファイルにログインする方法(両方)

私はLinuxの初心者です。私は物事を理解しようとしています。誰かがこれらの2つのコマンドを組み合わせる方法を教えてくれますか?

(1)通常、cronは、以下の方法でcrontabを編集することで、結果をログファイルに出力できます。

*/10 * * * * /scripts/mysc.sh >> /home/ara/Desktop/test/log.txt 2>&1 

(2)そして、cronの結果をメールにする必要がある場合は、[email protected] といった

[email protected]
*/10 * * * * /scripts/mysc.sh

しかし、(1)と(2)の両方のオプションを組み合わせる方法は?一部のウェブホスティングスペースで両方のオプションが同時に有効になっているのを見てきました。私は研究/グーグルを行いましたが、失敗しました。 CentOS 6.5を使用しており、crontab -eで編集します。

5
Aravinda

最初の例では、stderrとstdoutの両方をファイル(2>&1)に送信します。 cronで設定されたMAILTO変数は、リダイレクトされないすべての出力をキャプチャします。これを出力をファイルに送ることと組み合わせると、cronが電子メールで送信できる出力はありません。

Teeを使用して出力をファイルに追加し、それをstdoutに送信することをお勧めします。この回答- https://serverfault.com/a/472878/102867 -は、達成しようとしているものと非常に似ています。

または、最初の回答の提案に従い、ラッパースクリプトを記述して、スクリプトの出力をより適切に処理すると、ログに記録して、スクリプトの出力をメールで送信できます。

6
Andrew

ログとメールの両方のCronjob:

毎月1回、月の最初の日の午前0時に実行します:0 0 1 * *

0 0 1 * * /home/User/script.sh > /home/User/cronlog/`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 ; mailx -s "CronJob is run successfully" [email protected],[email protected]
2
Balaji A