Seien Sie effizienter, indem Sie mehrere Befehle unter Linux gleichzeitig ausführen
Möchten Sie viel Zeit sparen? Versuchen Sie, mehrere Befehle gleichzeitig in Ihrem Linux-Terminal auszuführen. Dadurch können Sie einfache sequentielle Befehle ausführen, Befehle im Hintergrund ausführen und sogar bedingte Befehle gemeinsam verarbeiten.
In diesem Beitrag untersuchen wir verschiedene Methoden zum sequenziellen und parallelen Ausführen mehrerer Befehle auf einem Linux-Terminal.
Warum mehrere Befehle gleichzeitig ausführen?
Ganz gleich, ob Sie einfache Wartungsaufgaben ausführen, große Datenmengen verarbeiten oder einfach nur Teile Ihres täglichen Arbeitsablaufs automatisieren möchten: Durch die gleichzeitige Ausführung mehrerer Befehle können Sie Ihre Prozesse optimieren und die Effizienz steigern.
Wenn Sie beispielsweise mehrere Ordner mithilfe von Befehlen sichern, können Sie diese miteinander verketten, anstatt jeden Befehl einzeln auszuführen und zu warten, bis einer abgeschlossen ist, bevor Sie den nächsten eingeben.
Persönlich verkette ich Befehle, wenn ich ein Linux-Paket installiere, das mehrere Module erfordert. Durch die Verkettung von Befehlen installiere ich das spezifische Tool und seine Abhängigkeiten auf einmal, ohne jeden Befehl einzeln einzugeben.
Führen Sie mehrere Befehle nacheinander aus
Ich verwende diese Technik meistens, wenn ich im Terminal arbeite. Bei dieser Methode verketten wir Befehle, sodass sie nacheinander ausgeführt werden, unabhängig vom Erfolg des vorherigen Befehls.
Um Befehle nacheinander auszuführen, trennen Sie diese einfach durch ein Semikolon ;. Wenn Sie die Eingabetaste drücken, führt Ihr Terminal den ersten Befehl aus, wartet auf dessen Abschluss, geht dann zum zweiten über und so weiter.
Wenn Sie beispielsweise Ihr System aktualisieren und gleichzeitig unnötige Dateien bereinigen möchten, führen Sie Folgendes aus:
sudo apt update; sudo apt upgrade -y; Sudo apt autoremoveDurch die Verkettung dieser Befehle stellen Sie sicher, dass sie nacheinander ausgeführt werden. Jeder Schritt ist abgeschlossen, bevor der nächste beginnt, sodass Ihr Prozess effizient und reibungslos verläuft.
Führen Sie je nach Bedingung mehrere Befehle aus
Was ist nun, wenn Sie möchten, dass der zweite Befehl nur ausgeführt wird, wenn der erste erfolgreich ist? Oder vielleicht möchten Sie, dass ein zweiter Befehl nur dann ausgeführt wird, wenn der erste fehlschlägt. Hier kommt die bedingte Befehlsausführung ins Spiel. Sie können && und || verwenden Betreiber, um dies zu erreichen.
Wird ausgeführt, wenn der erste Befehl erfolgreich war
Um einen Befehl nur dann auszuführen, wenn der vorherige erfolgreich ist, verwenden Sie zwischen Ihren Befehlen den Operator &&.
Wenn Sie beispielsweise einen neuen Ordner erstellen und dann die Verzeichnisse dorthin ändern möchten, führen Sie Folgendes aus, nur wenn die Ordnererstellung erfolgreich war:
mkdir neuer_Ordner && cd neuer_OrdnerWenn jedoch der erste Befehl fehlschlägt, werden keine weiteren Maßnahmen ergriffen.
Ausführen, wenn zunächst ein Fehler aufgetreten ist
Wenn Sie andererseits möchten, dass ein zweiter Befehl nur dann ausgeführt wird, wenn der erste fehlschlägt, verwenden Sie || Operator. Dies ist nützlich für die Protokollierung oder für Fallback-Befehle, wenn etwas schief geht.
Ich finde dies besonders hilfreich bei Dateivorgängen, beispielsweise beim Kopieren einer Datei in einen Sicherungsordner. Wenn das Kopieren fehlschlägt, möchten Sie es wissen, ohne Ihre Arbeit zu unterbrechen. Sie können dies erreichen, indem Sie || verwenden Operator zwischen zwei Befehlen wie diesem:
cp Dateiname /backup || echo „Fehlgeschlagen!“ >> error_log.txtHier versucht der Befehl cp, die Datei in den Sicherungsordner zu kopieren. Wenn der Kopiervorgang jedoch fehlschlägt, wird || Das Symbol (oder) weist das System an, den nächsten Befehl auszuführen, der den Fehler mithilfe des Echo-Befehls protokolliert. Auf diese Weise können Sie auch dann weiterarbeiten, wenn der Kopiervorgang fehlschlägt, und Sie erhalten eine Aufzeichnung des Fehlers, die Sie später überprüfen können.
Führen Sie den Befehl im Hintergrund aus
Manchmal möchten Sie nicht warten, bis eine Aufgabe abgeschlossen ist. Möglicherweise handelt es sich um einen langwierigen Prozess, und Sie arbeiten lieber weiter, während er im Hintergrund abläuft. Sie können dies ganz einfach tun, indem Sie am Ende Ihres Befehls ein kaufmännisches Und & hinzufügen.
Wenn Sie beispielsweise eine große Datei von einer bestimmten URL herunterladen möchten und der Downloadvorgang im Hintergrund erfolgen soll, führen Sie Folgendes aus:
sudo wget https://example.com/large-file.zip &Dadurch können Sie das Terminal während des Downloads weiterhin für andere Aufgaben nutzen.
Rohre und Hintergründe der zweite Befehl
Was ist nun, wenn Sie zwei Befehle verketten möchten, der zweite jedoch im Hintergrund ausgeführt wird, während der erste ausgeführt wird? Verwenden Sie dazu sowohl die Pipe | Operator und das kaufmännische Und-Symbol &.
Das Rohr | Sendet die Ausgabe des ersten Befehls als Eingabe an den zweiten Befehl, während das kaufmännische Und & die Ausführung des zweiten Befehls im Hintergrund ermöglicht.
Lassen Sie uns eine große Datei lesen und darin nach bestimmten Wörtern suchen. Speichern Sie dann die Ergebnisse in einer separaten Datei mit dem Operator „redirect >“:
cat-Beispieldatei.txt | grep "Projekt" > Ausgabe.txt &Hier finden sowohl der Such- als auch der Speichervorgang im Hintergrund statt. Darüber hinaus können Sie während der Suche gleichzeitig an anderen Befehlen weiterarbeiten.
Führen Sie mehrere Befehle parallel mit Xargs aus
Möchten Sie Multitasking auf ein neues Level bringen? Versuchen Sie, Befehle mit dem Befehl xargs parallel auszuführen. Dadurch können Sie mehrere Befehle parallel statt nacheinander ausführen.
Der Befehl xargs unterteilt außerdem eine Liste von Argumenten in Blöcke und führt für jeden Block parallel einen Befehl aus.
Wenn Sie beispielsweise eine Liste mit URLs in der Textdatei haben, die Sie alle auf einmal herunterladen möchten. Anstatt sie nacheinander herunterzuladen, können Sie sie mit diesem Befehl auch parallel herunterladen:
cat urls_file.txt | xargs -n 1 -P 4 wgetHier weist -n 1 xargs an, ein Argument pro Befehl zu verwenden, und -P 4 weist es an, vier Befehle parallel auszuführen. Der Befehl wget lädt jede URL gleichzeitig herunter, was den Vorgang im Vergleich zum sequenziellen Herunterladen erheblich beschleunigt.
Notiz: Das gleichzeitige Ausführen zu vieler Befehle kann Ihr System überlasten. Überwachen Sie immer die Auslastung Ihres Systems, da der Versuch, zu viele Prozesse auszuführen, zum Absturz führen kann.
Einpacken
Um es noch einmal zusammenzufassen: Sie können Befehle mit Semikolons ; verketten, Befehle bedingt mit && oder || ausführen, Aufgaben im Hintergrund mit & ausführen und Ihr Multitasking durch parallele Ausführung durch xargs steigern.
Unsplash. Alle Änderungen und Screenshots von Haroon Javed.
Schreibe einen Kommentar