Grundlegendes Tutorial zur Shell-Pipe-Umleitung
Pipeline dient zur Lösung des Problems der Kommunikation zwischen Prozessen. Sie ermöglicht die Übertragung von Daten zwischen zwei Prozessen und die Übertragung der Ausgabedaten eines Prozesses auf einen anderen Prozess als dessen Eingabedaten.
1.8.1 Anonymous Pipe"|"
Das Pipe-Symbol bedeutet, wie der Name schon sagt, es ist wie ein Rohr, durch das die Daten vom Rohreinlass zum Rohrauslass weitergeleitet werden das Rohr.
Pipeline dient zur Lösung des Problems der Kommunikation zwischen Prozessen. Sie ermöglicht die Übertragung von Daten zwischen zwei Prozessen und die Übertragung der Ausgabedaten eines Prozesses an einen anderen Prozess als dessen Eingabedaten. Die linke Seite der Pipe ist der Datengeber und die rechte Seite der Pipe ist der Datenempfänger.
echo "abcd" | passwd --stdin username
bedeutet beispielsweise, dass das Ausgabeergebnis „abcd“ des Prozesses echo als Eingabedaten des Prozesses passwd verwendet wird.
Grundlegende Rohrsymbole und ihre Verwendung sind leicht zu verstehen. Die Frage ist nun für ps aux | grep "ssh"
: Warum erscheint der Grep-Prozess in den Ergebnissen?
[root@xuexi ~]# ps aux | grep ssh root 1211 0.0 0.1 82544 3600 ? Ss Jul26 0:00 /usr/sbin/sshd -D root 25236 0.0 0.2 145552 5524 ? Ss 05:28 0:00 sshd: root@pts/0 root 25720 0.1 0.2 145416 5524 ? Ss 06:15 0:00 sshd: root@pts/1 root 25770 0.0 0.0 112648 948 pts/1 S+ 06:15 0:00 grep --color=auto ssh
Gemäß der allgemeinen Idee wird ps zuerst ausgeführt und nach Erhalt der Ausgabe werden die Ausgabedaten an grep übergeben. Zu diesem Zeitpunkt ist dies bei grep nicht der Fall läuft noch, aber ps ist fertig. Warum können wir immer noch Statistiken über den grep-Prozess sammeln? Der Grund dafür ist, dass die Pipeline eine prozessübergreifende Kommunikation implementiert und es zu Überschneidungen zwischen den beiden Prozessen kommt. Nach dem Ausführen des ps-Prozesses beginnt auch die Erfassung der Prozessinformationen und wartet auf den Empfang von Daten. Wenn ps Daten sammelt, wird die Ausgabe freigegeben. Die Daten werden an den Speicher übergeben und zur Filterung an grep weitergeleitet.
Das Wesentliche einer Pipe ist die Datenübertragung. Die Ausgabedaten auf der linken Seite der Pipe werden im Speicher abgelegt und vom Prozess auf der rechten Seite der Pipe gelesen. Wenn der Speicher nicht ausreicht, um die Ausgabedaten vollständig zu speichern, wartet der Prozess auf der linken Seite der Pipe, bis die rechte Seite der Pipe einen Teil der Daten aus dem Speicher entfernt, sodass der Prozess auf der linken Seite der Pipe ausgeführt werden kann Die Pipe kann weiterhin ausgeben und der Prozess auf der rechten Seite der Pipe wird sofort gestartet, nachdem der Prozess auf der linken Seite der Pipe gestartet wurde. Sie befand sich jedoch im Wartezustand und wartete auf den Empfang von Daten, die von der Pipe übergeben wurden .
Mit anderen Worten: Die Prozesse auf der linken und rechten Seite der Pipeline laufen nahezu in keiner Reihenfolge ab.
Wie verhindert ps aux grep „ssh“, dass der eigene Prozess von grep in den Ergebnissen erscheint? Es gibt zwei Methoden:
Methode eins: ps aux |. h ]"
[root@xuexi ~]# ps aux | grep ss[h] root 1211 0.0 0.1 82544 3600 ? Ss Jul26 0:00 /usr/sbin/sshd -D root 25236 0.0 0.2 145552 5524 ? Ss 05:28 0:00 sshd: root@pts/0 root 25720 0.0 0.2 145416 5524 ? Ss 06:15 0:00 sshd: root@pts/1
Bei der Verwendung anonymer Pipes haben Sie möglicherweise festgestellt, dass die Prozesse auf beiden Seiten der Pipe zur gleichen Prozessgruppe gehören, was bedeutet, dass die Daten auf der linken Seite der Pipe dies können Diese Daten können nur an den Prozess auf der rechten Seite der Pipe übergeben werden. Neben anonymen Pipes gibt es aber auch benannte Pipes, die die Daten eines Prozesses in einer Pipe-Datei (Fifo) speichern. Andere Prozesse können die darin enthaltenen Daten lesen Leser nicht mehr eingeschränkt. Informationen zu Named Pipes finden Sie im Linux/Unix-Betriebssystemkernel oder in Programmierbüchern, die im Allgemeinen detaillierte Einführungen enthalten.
1.8.2 Umleitung
1.8.2.1 UmleitungsgrundlagenAm häufigsten Die Datei Deskriptoren der Standardeingabe (stdin), der Standardausgabe (stdout) und der Standardfehlerausgabe (stderr) sind jeweils 0, 1 und 2, wobei 0, 1 und 2 auch als ihre numerischen Codes betrachtet werden können. Die Ausgabeinformationen können als die auf dem Bildschirm gedruckten Informationen betrachtet werden. Diejenige, die keinen Fehler ausgibt, ist die Standardausgabe, und diejenige, die eine Fehlermeldung ausgibt, ist die Standardfehlerausgabe. Natürlich ist diese Erklärung voreingenommen , aber es ist leicht zu verstehen. Sie können auch Ihre eigenen Deskriptoren anpassen, um eine erweiterte Umleitung zu implementieren. Ihre Verwendung wird möglicherweise in zukünftigen Artikeln vorgestellt.
Standardeingabe = /dev/stdin = Code 0 = < oder <<
Stdout = /dev/stdout = Code 1 = > oder >>
Standardfehler = /dev/stderr = Code 2 = 2>> verwenden.
<, >, 2> implementiert die Überschreibfunktion, >>, 2>> implementiert die Zusatzfunktion, aber << bedeutet hier: Erzeugen eines Dokuments (hier Dokument), was später im Inhalt der Zusammenarbeit zwischen Katze und Redirect erläutert wird. Darüber hinaus gibt es <<<, was einen Here-String bedeutet, siehe auch unten.
Manchmal bedeutet die Verwendung von „-“ auch /dev/stdin. Zum Beispiel:
[root@xuexi ~]# cat /etc/fstab | cat -
Das Auswerfen von stdout oder stderr nach /dev/null bedeutet, dass die Ausgabeinformationen verworfen werden. Umgekehrt bedeutet das Umleiten von /dev/null in eine Datei, dass die Datei gelöscht wird.
[root@xuexi ~]# cat /dev/null > ab.sh
[root@xuexi ~]# > ab.sh [root@xuexi ~]# : > ab.sh # 或"true >ab.sh",其实它们都等价于">ab.sh" [root@xuexi ~]# echo '' > ab.sh [root@xuexi ~]# truncate -s 0 ab.sh # truncate命令用于收缩和扩展文件大小 [root@xuexi ~]# dd if=/dev/null of=ab.sh
最后最重要的一点:在有重定向符号的语句中,命令执行之前已经将文件截断了。所以如果正在编辑一个文件并将编辑的结果重定向回这个文件将出现异常,因为截断后就没有合适的内容用于编辑。一个简单的示例如下:
[root@xuexi ~]# head a.log > a.log
有些时候直接使用">"覆盖输出是比较危险的。可以使用set -C来设置如果输出重定向文件已经存在则不覆盖。使用set +C来取消set -C的效果。如果在设置了set -C时仍然想强制覆盖,可以使用“>|”代替“>”来重定向输出。同理错误输出也有此特性。
[root@xuexi tmp]# set -C [root@xuexi tmp]# cat flip >ttt.txt -bash: ttt.txt: cannot overwrite existing file [root@xuexi tmp]# cat flip >| ttt.txt [root@xuexi tmp]# set +C
1.8.2.2 cat和重定向配合
配合cat使用可以分行输入内容到文件中。
[root@xuexi tmp]# cat <<eof>log.txt # 覆盖的方式输入到log.txt > this is stdin character > eof
也可以使用下面的方法。
[root@xuexi tmp]# cat >log1.txt <<eof > this is stdin character first! > eof
一方面,eof部分都必须使用"< 另一方面,>log1.txt表示将document的内容覆盖到log1.txt文件中,如果是要追加,则使用>>log1.txt。所以,追加的方式如下: 或 1.8.2.3 tee双重定向 可以使用tee双重定向。一般情况下,重定向要么将信息输入到文件中,要么输出到屏幕上,但是既想输出到屏幕又想输出到文件就比较麻烦。使用tee的双重定向功能可以实现该想法。如图。 选项说明: -a:默认是将输出覆盖到文件中,使用该选项将变为追加行为。 file:除了输出到标准输出中,还将输出到file中。如果file为"-",则表示再输入一次到标准输出中。 例如下面的代码,将a开头的文件内容全部保存到b.log,同时把副本交给后面的的cat,使用这个cat又将内容保存到了x.log。其中"-"代表前面的stdin。 还可以直接输出到屏幕: tee默认会使用覆盖的方式保存到文件,可以使用-a选项来追加到文件。如: 现在就可以在使用cat和重定向创建文件或写入内容到文件的同时又可以在屏幕上显示一份。 1.8.2.4 <<和<<< 在bash中,<<和<<<是特殊重定向符号。<<表示的是here document,<<<表示的是here string。 here document在上文已经解释过了,对于here string,表示将<<<后的字符串作为输入数据。 例如: 等价于: Das obige ist der detaillierte Inhalt vonGrundlegendes Tutorial zur Shell-Pipe-Umleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website![root@xuexi ~]# cat <<abcx
> 123
> 345
> abcx
123
345
[root@xuexi tmp]# cat >>log1.txt <<eof
> this is stdin character first!
> eof
[root@xuexi tmp]# cat <<eof>>log1.txt
> this is stdin character first!
> eof
tee [-a] file
[root@xuexi tmp]# cat a* | tee b.log | cat - >x.log
[root@xuexi tmp]# cat a* | tee b.log | cat
[root@xuexi tmp]# cat a* | tee -a b.log | cat
[root@xuexi tmp]# cat <<eof | tee ttt.txt
> x y
> z 1
> eof
x y
z 1
passwd --stdin user <<< password_value
echo password_value | passwd --stdin user

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Dewu APP ist derzeit eine sehr beliebte Marken-Shopping-Software, aber die meisten Benutzer wissen nicht, wie sie die Funktionen in Dewu APP verwenden. Nachfolgend finden Sie eine Zusammenfassung des Dewuduo-Tutorials Interessierte Benutzer können vorbeikommen und einen Blick darauf werfen! Tutorial zur Verwendung von Dewu [20.03.2024] Verwendung des Dewu-Ratenkaufs [20.03.2024] So erhalten Sie Dewu-Gutscheine [20.03.2024] So finden Sie den manuellen Kundendienst von Dewu [2024-03- 20] So überprüfen Sie den Abholcode von Dewu [20.03.2024] Wo Sie Dewu kaufen können [20.03.2024] So eröffnen Sie Dewu VIP [20.03.2024] So beantragen Sie die Rückgabe oder den Umtausch von Dewu

Bei der Verarbeitung von Dateien unter Linux-Systemen ist es manchmal erforderlich, Zeilen am Ende der Datei zu löschen. Dieser Vorgang kommt in praktischen Anwendungen sehr häufig vor und kann durch einige einfache Befehle erreicht werden. In diesem Artikel werden die Schritte zum schnellen Löschen der Zeile am Ende der Datei im Linux-System vorgestellt und spezifische Codebeispiele bereitgestellt. Schritt 1: Überprüfen Sie die letzte Zeile der Datei. Bevor Sie den Löschvorgang durchführen, müssen Sie zunächst bestätigen, welche Zeile die letzte Zeile der Datei ist. Sie können den Befehl tail verwenden, um die letzte Zeile der Datei anzuzeigen. Der spezifische Befehl lautet wie folgt: tail-n1filena

Nach dem Regen im Sommer können Sie oft ein wunderschönes und magisches besonderes Wetterbild sehen – den Regenbogen. Dies ist auch eine seltene Szene, die man in der Fotografie antreffen kann, und sie ist sehr fotogen. Für das Erscheinen eines Regenbogens gibt es mehrere Bedingungen: Erstens sind genügend Wassertröpfchen in der Luft und zweitens scheint die Sonne in einem niedrigeren Winkel. Daher ist es am einfachsten, einen Regenbogen am Nachmittag zu sehen, nachdem der Regen nachgelassen hat. Allerdings wird die Bildung eines Regenbogens stark von Wetter, Licht und anderen Bedingungen beeinflusst, sodass sie im Allgemeinen nur von kurzer Dauer ist und die beste Betrachtungs- und Aufnahmezeit sogar noch kürzer ist. Wenn Sie also auf einen Regenbogen stoßen, wie können Sie ihn dann richtig aufzeichnen und qualitativ hochwertige Fotos machen? 1. Suchen Sie nach Regenbögen. Zusätzlich zu den oben genannten Bedingungen erscheinen Regenbögen normalerweise in Richtung des Sonnenlichts, das heißt, wenn die Sonne von Westen nach Osten scheint, ist es wahrscheinlicher, dass Regenbögen im Osten erscheinen.

1. Öffnen Sie zunächst WeChat. 2. Klicken Sie oben rechts auf [+]. 3. Klicken Sie auf den QR-Code, um die Zahlung einzuziehen. 4. Klicken Sie auf die drei kleinen Punkte in der oberen rechten Ecke. 5. Klicken Sie auf , um die Spracherinnerung für den Zahlungseingang zu schließen.

Das Testen eines Monitors beim Kauf ist ein wesentlicher Bestandteil, um den Kauf eines beschädigten Monitors zu vermeiden. Heute werde ich Ihnen beibringen, wie Sie den Monitor mit Software testen. Methodenschritt 1. Suchen Sie zunächst auf dieser Website nach der DisplayX-Software, laden Sie sie herunter, installieren Sie sie und öffnen Sie sie. Sie werden dann viele Erkennungsmethoden sehen, die den Benutzern zur Verfügung gestellt werden. 2. Der Benutzer klickt auf den regulären Volltest. Der erste Schritt besteht darin, die Helligkeit des Displays zu testen. Der Benutzer stellt die Anzeige so ein, dass die Kästchen deutlich sichtbar sind. 3. Klicken Sie dann mit der Maus, um den nächsten Link einzugeben. Wenn der Monitor jeden schwarzen und weißen Bereich unterscheiden kann, bedeutet dies, dass der Monitor immer noch in Ordnung ist. 4. Klicken Sie erneut mit der linken Maustaste und Sie sehen den Graustufentest des Monitors. Je glatter der Farbübergang, desto besser der Monitor. 5. Darüber hinaus haben wir in der DisplayX-Software

PhotoshopCS ist die Abkürzung für Photoshop Creative Suite. Es handelt sich um eine von Adobe hergestellte Software, die häufig im Grafikdesign und in der Bildverarbeitung verwendet wird. Lassen Sie mich Ihnen heute erklären, was Photoshopcs5 ist und wie Sie Photoshopcs5 verwenden. 1. Welche Software ist Photoshop CS5? Adobe Photoshop CS5 Extended ist ideal für Profis in den Bereichen Film, Video und Multimedia, Grafik- und Webdesigner, die 3D und Animation verwenden, sowie Profis in den Bereichen Technik und Wissenschaft. Rendern Sie ein 3D-Bild und fügen Sie es zu einem zusammengesetzten 2D-Bild zusammen. Bearbeiten Sie Videos einfach

Mit der kontinuierlichen Weiterentwicklung von Smartphones sind die Funktionen von Mobiltelefonen immer leistungsfähiger geworden, darunter die Funktion zum Aufnehmen langer Bilder zu einer der wichtigen Funktionen, die viele Benutzer im täglichen Leben nutzen. Lange Screenshots können Benutzern dabei helfen, eine lange Webseite, Gesprächsaufzeichnung oder ein Bild gleichzeitig zu speichern, um sie einfacher anzeigen und teilen zu können. Unter vielen Mobiltelefonmarken gehören auch Huawei-Handys zu den Marken, die von den Nutzern sehr geschätzt werden, und auch ihre Funktion zum Zuschneiden langer Bilder wird hoch gelobt. In diesem Artikel erfahren Sie, wie Sie lange Bilder mit Huawei-Mobiltelefonen richtig aufnehmen, und erhalten einige Expertentipps, die Ihnen dabei helfen, Huawei-Mobiltelefone besser zu nutzen.

PHP-Tutorial: So konvertieren Sie den Int-Typ in einen String. In PHP ist das Konvertieren von Ganzzahldaten in einen String ein häufiger Vorgang. In diesem Tutorial erfahren Sie, wie Sie die in PHP integrierten Funktionen verwenden, um den Typ int in einen String zu konvertieren, und stellen gleichzeitig spezifische Codebeispiele bereit. Cast verwenden: In PHP können Sie Cast verwenden, um ganzzahlige Daten in einen String umzuwandeln. Diese Methode ist sehr einfach. Sie müssen lediglich (string) vor den ganzzahligen Daten hinzufügen, um sie in einen String umzuwandeln. Unten finden Sie einen einfachen Beispielcode
