cronは(メールではなく)*デフォルトで*ジョブ出力をログに書き込むことができますか?


23

cronジョブからの出力を処理する正しい方法は、ファイルにリダイレクトすることです。

0 * * * * /bin/date >> /var/log/date.log 2>&1

ただし、管理者が怠け者、物忘れ、または無知で、これらのリダイレクトを入れない場合があります。この場合、ジョブの出力は$ MAILTOまたは所有ユーザーまたはルートにメールで送信されます。私が管理する一部のボックスでは、メールが無効になっているため、この出力はブラックホールに入ります。私が疑問に思っていることは、cronにジョブの出力を取得するように指示する方法はありますか?それをメールで送信する代わりに、それをどこかのキャッチオールログファイルに投げますか?Ubuntuを使用しています(8.04が9.04に移行しています)。このランダムなGoogleの結果には、このような解決策のヒントがありますが、私はOPがcronジョブとcronジョブの出力について混同していると思います。

私は少しのスクリプティングまたはハッキングを伴うソリューションを受け入れていますが、理想的には、これはどこかに設定できる設定ビットです。にヒントが表示されませんman cron。ありがとう!

回答:


1

cronie(Gentooハンドブックなどによって推奨される)のcron、syslogを使用し、システムログにジョブ出力を送信するcronコールに引数を「-s」があります。


3

短い答えはノーです。cronは設計上、crontabの所有者にメールを送信します。標準のcronでは、これを変更する方法はありません。

考えられる最善の方法は、この動作でユーザーのメールボックスではなくログファイルにメールをダンプするマシンでMTAを構成することです。


3

「メールが無効になっています」と言ったときの正確な意味がわかりません。しかし/etc/aliases、パイプに向けられたエイリアスを設定できますか?何かのようなもの

root: "|/bin/cat >> /var/log/cron.log"

root: /var/log/cron.log動作しませんか? feep.net/sendmail/tutorial/intro/aliases.html
endolith

私にとっても何もしません。
エンドリス

これらは、MTAとしてsendmailを実行している場合にのみ機能します。これはあまり一般的ではありません。(はい、私は5歳のコメントに返信していることを知っています!)
アレックスL

2

Ubuntu(またはその他の)cronを使用すると、あなたが求めていることは実際には可能だとは思いません。

geekmonkeysのアイデアとは別に、$ MAILTOをローカルアカウントに設定し、procmailを介して出力をルーティングすることもできます。


1

このようなcronの設定を聞いたことがないので、スクリプトのルートを取ります。

/ var / spool / cron / *を巡回するcronジョブを作成し、リダイレクトを持たないジョブにリダイレクトを追加します。


1

もう1つのオプションは、cron_wrapperなどと呼ばれるシェルスクリプトを作成し、次のようにするだけです。

#!/ bin / sh

eval "$ * >> /var/log/cronlog.log"
出口$?

次に、すべてのcrontabに次のようなものが必要です。

* * * * * / usr / local / bin / cron_wrapper echo hello

注:このコードはテストしていませんが、単なるアイデアです。


1
それは問題を解決しません。人々がMAILTOを設定したり、stdoutをファイルにリダイレクトしたりすることを覚えていない場合、ラッパーを介して何かを実行することを忘れることはありません。
カミルKisiel 09

1

「標準cron」とは何なのかわかりません。多くのcronデーモンがあり、異なるディストリビューションは異なるデーモンを使用します。Vixie cronが最も広く展開されているので、おそらくあなたが意図したものです。しかし、一部のディストリビューションでは、デフォルトではありません。

Arch LinuxのデフォルトであるDillonのcron(dcron)開発を引き継ぎました。他のディストリビューションもそれを使用していますが、それが他のどこでもデフォルトであるかどうかはわかりません。dcronには、-Msendmailの代わりにカスタムスクリプトを使用することを指定する呼び出しオプションがあります。スクリプトは引数なしで呼び出され、いくつかの電子メールヘッダーと&>cronjob の出力が標準入力として呼び出されます。(&>出力がない場合、スクリプトは呼び出されません。)


1

特定のユーザーのcrontabでMAILTO = ""を設定しないのはなぜですか。これにより、/ var / spool / mail /のメールメッセージのログが無効になります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.