私はCentOS 5.5を使用しています。
/etc/cron.daily/に複数のcronjobが保存されています。これらのcronjobの電子メールの一部を特定の電子メールアドレスに送信し、/etc/cron.daily/の残りの電子メールをデフォルトの電子メールアドレス(root@localhost)に送信したいと思います。
/etc/cron.daily/のCronjobは/etc/crontabファイルで実行されます。 /etc/crontab は「MAILTO」フィールドを指定します。 /etc/cron.daily/foo cronjobでMAILTOを設定してこれを無視できますか?
この問題を処理する最良の方法は何ですか?
答え1
設定が[email protected]
機能しません/etc/cron.daily/foo
。スクリプト出力は次に送信されません。[Eメール保護]。
ページの場所は次のとおりです。http://www.unixgeeks.org/security/newbie/unix/cron-1.htmlまた、簡単なソリューションを提案しました。
これで、ファイルには/etc/cron.daily/foo
次の内容が含まれます。
#!/bin/sh
/usr/bin/script 2>&1 | mailx -s "$0" [email protected]
'にEメールが送信されます。[Eメール保護]'テーマはスクリプトのフルパスと同じです(例/etc/cron.daily/foo
:)。
Unixgeeks.orgには次の内容があります。
クローン出力
前述したように、cronの出力はプロセス所有者またはMAILTO変数で指定された人にメールで送信されますが、それを望まない場合はどうすればよいですか?出力を他の人にメールで送信するには、出力をコマンドメールにパイプするだけです。例えば
cmd | mail -s "メールの件名" ユーザー
時にはstdoutではなくcronjobでエラーを受けたい場合もあるので、このトリックを使用します。一見すると、構文が疑わしいように見えるかもしれませんが、有効であることを確認してください。次のcronjobはSTDOUTを/ dev / nullに送信してからSTDERRをパイプします。
doit 2>&1 >/dev/null | mailx -s "$0" [email protected]
同じ内容ですが、syslogに送信されます。
doit 2>&1 >/dev/null | /usr/bin/logger -t $ME
ServerFaultに対する私の答えも参照してください。ファイルと電子メールのCronjob stderr
答え2
よりエレガントな解決策は/etc/cron.d
直接使用することです。スクリプトをに挿入する代わりに、次/etc/cron.daily
の場所に置き、次のように/usr/local/sbin/myscript.sh
ファイルを作成します。/etc/cron.d/myscript
MAILTO=root,[email protected]
# run myscript.sh at 4:11 every day
11 4 * * * root /usr/local/sbin/myscript.sh
また、特定の勤務日にのみタスクが実行される場合をより効果的に制御できます。crontab(5)
詳細については、その人を参照してください。
答え3
このコンピュータにSAアクセス権があると仮定すると、新しいユーザーアカウントを作成し、そのアカウントのcronジョブにジョブを追加できます。その後、アカウントのホームフォルダにある.forwardファイルを使用してユーザーのメールを転送できます。 cronジョブに特権アクセスが必要な場合は、このユーザーの権限を設定する必要があります。
この回答が最善であるか、Stefanの回答が最善かは、実際に設定するのにどれほど手間がかかり、エラーメッセージをルートメールに送信するのか、通常は毎日の出力を監視している人に送信するのかによって異なります。
幸運を祈る