Heim  >  Artikel  >  Backend-Entwicklung  >  Die Bedeutung von „2>&1“ in der Linux-Shell

Die Bedeutung von „2>&1“ in der Linux-Shell

巴扎黑
巴扎黑Original
2017-06-26 15:20:132001Durchsuche

Sie können es oft in geplanten Aufgaben sehen. Zum Beispiel das Beispiel einer geplanten Aufgabe unseres Unternehmens:

*/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

Für & 1 sollte es genauer gesagt der Dateideskriptor 1 sein, und 1 identifiziert die Standardausgabe stdout.
Für 2 steht Standardfehler, stderr.
2>&1 bedeutet, dass die Standardfehlerausgabe auf die Standardausgabe umgeleitet wird. Hier wurde die Standardausgabe nach /dev/null umgeleitet. Dann wird der Standardfehler auch nach /dev/null ausgegeben.

Sie können sich /dev/null als „schwarzes Loch“ vorstellen. Es entspricht einer schreibgeschützten Datei Für immer verloren gehen. Und wenn Sie versuchen, Inhalte daraus zu lesen, erhalten Sie nichts

Gelegentlich können Sie & am Ende des Befehls hinzufügen, um das Programm im Hintergrund ausführen zu lassen.

Warum steht 2>&1 am Ende?

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

Wir können verstehen, dass die linke Seite die Standardausgabe ist, okay, jetzt wird die Standardausgabe direkt in /dev/null eingegeben und 2> ;&1 leitet den Standardfehler zur Standardausgabe um. Wenn das Programm also einen Fehler generiert, entspricht dies dem Fehler, der nach links fließt, und die linke Seite wird weiterhin in /dev/null eingegeben .

kann so verstanden werden, dass, wenn es in die Mitte geschrieben wird, die in der Standardausgabe angegebene Ausgabedatei blockiert wird.

Sie können

verwenden

ls 2>1 Test, der Fehler, dass keine Datei 2 vorhanden ist, wird nicht gemeldet, sondern eine leere Datei 1 wird ausgegeben;
ls xxx 2>1 Test, der Fehler, dass keine xxx-Datei vorhanden ist Ausgabe an 1;
ls xxx 2>&1 test, die Datei 1 wird nicht generiert, aber der Fehler wird an die Standardausgabe gesendet
ls xxx >out.txt 2>&1, es ist tatsächlich möglich durch ls xxx ersetzt werden 1>out.txt 2>&1;Umleitungssymbol>Der Standardwert ist 1 und Fehler und Ausgaben werden an out.txt übertragen.

Das obige ist der detaillierte Inhalt vonDie Bedeutung von „2>&1“ in der Linux-Shell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn