>/dev/null 2>&1が機能しないのはなぜですか?

>/dev/null 2>&1が機能しないのはなぜですか?

Ubuntu 16.04を実行しながら、/etc/crontabに以下を追加しました。

* * * * * root wget https://www.exmaple.org/bus/ >/dev/null 2>&1

cronジョブは正常に実行されますが、結果は期待どおりに削除されず、/root/にファイルとして書き込まれます。

ベストアンサー1

>/dev/nullコマンドの標準出力を削除します。あなたの例ではそうではありません。2>&1コマンドの標準エラーが削除されるようにします。あなたの例には、wgetによって表示されるステータスとエラー情報が含まれます。

URLが有効な場合(たとえば、サーバーがページの一部のコンテンツを返す場合)、wgetはページコンテンツをファイルに保存します。これは、wgetの標準出力やwgetの標準エラーを表示しません。これはwgetがファイルに保存するいくつかのデータです。 wgetは標準ストリームではなく名前で開かれたファイルとして出力されるため、リダイレクトの影響を受けません。

出力をどこにでも保存したくない場合は、wgetに次の場所に保存するように指示してください/dev/null

wget -O /dev/null …

cronジョブのエラーは便利ですが、Ubuntuはデフォルトでそのエラーを削除します。 cronジョブの出力(標準出力と標準エラー)は、ローカルメールを介して送信されます。管理者はルートのメールをどのように読むべきですか?これを達成する方法を学びます。面倒なことに、wgetはすべてが正常であっても多くの出力を生成しますが、エラーのみを表示するオプションはありません。出力を保存してコマンドが成功した場合は、削除してこの問題を解決できます。

trace=$(wget … 2>&1) || echo "$trace" >&2

おすすめ記事