ホームページ  >  記事  >  バックエンド開発  >  Linuxシェルの「2>&1」の意味

Linuxシェルの「2>&1」の意味

巴扎黑
巴扎黑オリジナル
2017-06-26 15:20:132006ブラウズ

計画されたタスクでよく見られます。たとえば、当社の計画タスクの例:

*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testOne >/dev/null 2>&1*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testTwo >/dev/null 2>&1

& 1 の場合、より正確には、ファイル記述子 1 である必要があり、1 は標準出力 stdout を識別します。
2 の場合、標準エラー、stderr を表します。
2>&1 は、標準エラーを標準出力にリダイレクトすることを意味します。ここでは、標準出力が /dev/null にリダイレクトされています。その後、標準エラーも /dev/null に出力されます

/dev/null は「ブラックホール」と考えることができ、書き込まれた内容はすべて永久に失われます。そして、そこから取得してみてください。コンテンツを読んでも、何も読み込まれません。

場合によっては、コマンドの最後に & を追加して、プログラムをバックグラウンドで実行させることができます。

なぜ最後に2>&1と書かれているのですか?

index.php task testOne >/dev/null 2>&1

左側が標準出力であることがわかります。標準出力は /dev/null に直接入力され、2>&1 は標準エラーを標準出力にリダイレクトします。プログラムでエラーが発生すると、左側にエラーが流れたことに相当し、左側は/dev/nullに入力されたままになります。

を途中で書くと、標準出力で指定されたファイルがブロックされると理解できます

ls 2>1 を使用してテストできますが、そこにあるというエラーは報告されません2 ファイルはありませんが、空のファイル 1 が出力されます。
ls xxx 2>1 テストでは、xxx ファイルがないというエラーが 1 に出力されます。ファイル 1 は生成されません。ですが、エラーは標準出力に出力されます。
ls xxx >out.txt 2>&1; で置き換えることができます。デフォルトは 1 で、エラーと出力は out.txt に送信されます。

以上がLinuxシェルの「2>&1」の意味の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。