ルートのcrontab内の特定のcrontabジョブのメールの送信先を変更するには、次のようにできますか(Do Somethingジョブではrootに送信せず、porkloverに送信するだけです)。
# Make a hambone appear
* * * * * /scripts/hambone.pl
# Eat Ham
* * * * * /scripts/manga_ham.py
OLDMAILTO=$MAILTO
MAILTO=porklover.cramble.edu
#Do something
* * * * * /scripts/chown_abrahams_niece.sh
MAILTO=$OLDMAILTO
従来のcron実装では、この方法でそれを行うことはできません。 crontabの変数定義はグローバルであり、cronはすべてのコマンドに同じ電子メールアドレスを使用します。
1つの回避策は、ローカルアドレスを使用し、入力に基づいてリダイレクトすることです。
ジョブの出力を別のアドレスに送信する別の方法は、手動で送信することです。さまざまな方法については、 1つのプロセスから別のプロセスに出力をパイプ処理して、最初のプロセスに出力がある場合にのみ実行する方法 を参照してください。
いくつかの最近のcron実装、少なくともsystemdのcrontabは、異なる方法でcrontabを解析します(thanks geedoubleya 、 jarauh ):ジョブラインより上の割り当てのみがそのジョブに適用されます。したがって、最新のLinuxシステムを使用している場合は、それを実行できる可能性があります。システムのドキュメントを確認してください(man 5 crontab
)。
Cronは変数の割り当ての右側を展開しないため、質問で提案したことはまだ実行できません。 MAILTO=$OLDMAILTO
は、MAILTO
をドル記号で始まる値に設定します。古いアドレスを繰り返す必要があります。
# Make a hambone appear. Email sent to the user running the crontab.
* * * * * /scripts/hambone.pl
[email protected]
#Do something. Email sent to [email protected]
* * * * * /scripts/chown_abrahams_niece.sh
MAILTO=
# Hunt rabbits. Doesn't send email.
* * * * * /scripts/hunt.pl --rabbits
MAILTO=bob
# Eat Ham. Email sent to bob on the local machine.
* * * * * /scripts/manga_ham.py
また、MAILTO=porklover.cramble.edu
はアカウントにメールを送信しますporklover.cramble.edu
ローカルマシン上。それはおそらくあなたが望むものではありません。
このような変数をcronエントリで設定することはできませんが、crontabで実行できるのは、単一のエントリのMAILTO
変数を上書きして、後続のエントリで設定し直すことです。
例:
# Eat Ham
* * * * * /scripts/manga_ham.py
MAILTO=porklover.cramble.edu
#Do something
* * * * * /scripts/chown_abrahams_niece.sh
MAILTO=root
これの欠点として、デフォルトのMAILTO
設定が変更された場合(/etc/crontab
例)このcronエントリでも変更する必要があります。