Ubuntu 18.04では、次のようにman cron
言います。
cronはsyslogツール「cron」に対応するアクションを記録し、標準のsyslogd(8)ツールを使用して履歴を制御できます。
また、cronのデフォルト設定は、cronデーモンを起動するinit.dスクリプトが読み取る/etc/default/cronによって制御されます。このファイルは、cronがシステムの環境変数を読み取るかどうかを決定し、実行前にcronプログラムに追加のオプションを追加してログを設定したり、/ etc / cronでファイルを処理する方法を定義したりできます。ディ。
タスクを追加しました。/etc/crontab
* * * * * t ( date && echo $PATH && date )
ジョブの出力を見つけようとしましたが、システムログに見つからないのはなぜですか?ありがとうございます。
$ less /var/log/syslog
...
Nov 3 12:21:01 ocean CRON[23992]: (t) CMD (( date && echo $PATH && date ) )
Nov 3 12:21:01 ocean CRON[23985]: (CRON) info (No MTA installed, discarding output)
$ cat /etc/default/cron
# This file has been deprecated. Please add custom options for cron using
# $ systemctl edit cron.service
# or
# $ systemctl edit --full cron.service
ベストアンサー1
cron
それを記録する行動syslog
詳細レベルは設定されたログレベルによって異なります。これには雇用による結果は含まれません。
後者については、マニュアルページに次のように記載されています。
コマンドが実行されると、すべての出力がcrontabの所有者(またはcrontabのMAILTO環境変数がある場合はそのユーザー)にメールで送信されます。
MTAを構成していないため、ログに示すように出力は削除されます。
MTAを設定するには、Debianおよびその派生パッケージのMTAパッケージにsudo apt install postfix
プロンプトをたどるだけで、簡単な設定を構成するための良いインストールスクリプトが提供されます。
または、次のコマンドを使用してcronジョブの出力をシステムログにリダイレクトできますlogger
。ジョブ出力をlogger -p cron.info
(通常出力の場合)およびlogger -p cron.err
(エラーの場合)にパイプします.
cronが出力を電子メールで送信すると予想するのは、cronジョブ出力の粒度がシステムロガーの粒度と一致しないためです(ログはユーザーごとに保存されません)。システム内のすべてのユーザーはcronジョブを設定できますが、ユーザーが必ずしもシステムログにアクセスできるわけではなく、これらのログにアクセスできる他のすべてのユーザーが自分のジョブ出力を表示したくない場合があります。 cronが設計されたとき、電子メールはそれを管理するユーザーにcronジョブの結果を送信する合理的な方法でした。 Unixシステムは効率的な電子メール設定を持つことが期待されています。今日、これは電子メールの適合性が変更されたためではなく、ユーザビリティが変更されたため、あまり明確ではありません。仕事用電子メールがあるシステムでは、これをcron出力に使用することをお勧めします。あるいは、ジョブをユーザー固有のログファイルに出力することもできます(各ジョブには特定のリダイレクトがあります)。
systemd タイマーにはこの問題は発生しません。ユーザータイマーは個人ユーザー固有のログに記録されます。