Docker protokolliert foo | less` ist nicht durchsuchbar oder scrollbar, aber Docker protokolliert foo 2> & 1 | weniger ist


10

Wenn Sie eines von beiden verwenden, erhalten Sie lesbaren Text. Aber nur mit der stderr-Umleitung kann man scrollen oder / somepattern eingeben und Übereinstimmungen erhalten.

Ohne es gibt die Suche "Nichts zu suchen (drücken Sie die EINGABETASTE)" und eine Spalte mit ~.

Zwar sind stderr und stdout nicht gleich, aber warum zeigt weniger sie gleich, bis ich anfange, etwas in weniger zu tun?

Dies ist vielleicht eine seltsame Sache mit mehreren Fenstern, die ich einfach nicht verstehe. Gedanken?

Antworten:


7
+--------------------+        +------+       +----------+
|             stdout |·······→| less |——————→|          |
| somecommand        |        +------+       | terminal |
|             stderr |——————————————————————→|          |
+--------------------+                       +----------+

Wenn somecommanddruckt Text nur Standardfehler, dann , wenn Sie laufen somecommand | less, somecommandund lesssind die Anzeige sowohl auf dem Terminal. Die Ausgabe des Befehls auf seinem stderr wird nicht lessdirekt an das Terminal gesendet, da er nicht umgeleitet wird. Zuerst wird die Ausgabe von somecommandBildlaufvorgängen durch weniger initialisiert und die Eingabeaufforderungszeile angezeigt. Wenn somecommandweniger fertig ist, merkt man, dass die Eingabe abgeschlossen ist (weil das Rohr geschlossen ist). Vielleicht möchten Sie ein bisschen experimentieren: Ausführen

{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }

und Variationen der Schlafzeiten, um eine somecommandProduktionsleistung zu erzielen, bevor oder nachdem weniger fertig ist, und um zu sehen, was passiert, wenn das Rohr geschlossen ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.