計画されたタスクでよく見られます。たとえば、当社の計画タスクの例:
*/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 サイトの他の関連記事を参照してください。