
月に一度実行するこのスクリプトがあり、出力を私の電子メールで送信したいと思います。
このように手動で実行すると、標準出力がマイメールに送信されます。
./monthly_mail.sh | mail -s "Mail purged" [email protected]
ただし、次の行を自分のアイテムに追加すると、空のcrontab
メールのみが届きます。スクリプトのstdoutputがパイプで接続されていないのはなぜですかmail
?
* * 2 * * /var/mail/monthly_mail.sh | /usr/bin/mail -s "Mail purged" [email protected]
答え1
試してみるいくつかの作業があります。
正しい
crontab
スペルファイルに入れる場合は、
/etc/crontab
cronジョブを実行するユーザーを指定する必要があります。したがって、行は次のようになります。* * 2 * * root /var/mail/monthly_mail.sh | /usr/bin/mail -s "Mail purged" [email protected]
コマンドが
root
実行されるユーザーです。必要に応じて変更してください。cronの外でEメールをテストする
ファイルから cron を実行するユーザーとしてコマンドを実行できることを確認します。
/etc/crontab
まず、シェルでスタンドアロンで実行し、それをcrontabに移動します。$/var/mail/monthly_mail.sh | /usr/bin/mail -s "メールが削除されました"[Eメール保護]
出力を確認してください
MAILTO
Cronには通常、STDOUTまたはSTDERRで生成されたすべての出力を取得できるデフォルトのユーザーがいます。ユーザーに電子メールで送信されたエラーメッセージがあることを確認してください。これにより、コマンドが実行されなかった理由がわかります。このメールアドレスは通常、cron で次のように構成されます。
[email protected]
答え2
他のサイトでは、次のように2>&1
before追加を提案します|
。
* * 2 * * root /var/mail/monthly_mail.sh 2>&1 | /usr/bin/mail -s "Mail purged" [email protected]