cronのマンページによると
コマンドを実行すると、すべての出力crontabの所有者(またはcrontabのMAILTO環境変数がある場合はそのユーザー)にメールで送信されます。 -sオプションを使用して、すべてのジョブ出力をsyslogに送信することもできます。
cronジョブを実行すると、cronデーモンが出力を記録するのが難しい理由を理解しようとしています。職場でリダイレクトを使用するのも効果があると思いますか?
「すべての出力」に両方含まれていますか?
- cronデーモンによって実行されたジョブによって生成された出力
- cronデーモン自体から生成された出力?
もし
「すべての出力」は、cronデーモン自体によって生成された出力ではなく、cronデーモンによって実行されたジョブによって生成された出力だけです。
私たちは、出力がどのファイルに書き込まれるのではなく、出力の内容にのみ興味があります。
-s
cronのログイン/電子メール機能(オプションなど)を使用する代わりに、ジョブのコマンド出力を別のファイルにリダイレクトするようにcronabファイルのタスク行に割り当てることはできますか?
30 18 * * * rm /home/someuser/tmp/* > /home/t/mycron.log 2>&1
ありがとうございます。
答え1
「すべての出力」とは、「ジョブのコマンドが標準出力または標準エラーに送信するすべて」を意味します。
実行中のコマンドに標準出力をファイルにリダイレクトすることが含まれている場合、コマンド全体は標準出力をすべてファイルにリダイレクトするため、標準出力はエクスポートされません。
ジョブによって生成された出力は、ジョブを所有するすべてのユーザーの属性と見なされます。ジョブの実行に対してcronデーモン自体によって生成されたログメッセージ(何を実行したのか、いつ、誰のアカウントで実行したのか、何を実行したのか)、ジョブの結果コードは)はシステム管理者の資産と見なされます。
-s
デーモン「cronie」のオプションにより、ジョブcron
出力返品システム管理者がより簡単に使用できるように、システムログに記録します。また、ローカル電子メールサービスが機能しないシステムにも役立ちます。
はい。出力をリダイレクトできます。ただし、通常、標準エラー出力をリダイレクトすることにも注意する必要があります。
30 18 * * * rm /home/someuser/tmp/* > /home/t/mycron.log 2>/home/t/mycron.errors.log
...または、同じファイルにstdoutとstderrの両方を提供したい場合は、次の略語を使用できます。
30 18 * * * rm /home/someuser/tmp/* > /home/t/mycron.log 2>&1
(標準rm
コマンドは通常標準出力に何も印刷せず、すべてのエラーは標準エラーに移動します。これが両方の出力タイプをキャプチャする必要がある理由です。)