GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So wiederholen Sie einen Befehl, bis er in Linux erfolgreich ist

In dieser kurzen Anleitung lernen wir, wie man einen Befehl wiederholt, bis er unter Linux erfolgreich ist. Dies kann in vielen Fällen hilfreich sein. Sie können diese Methode beispielsweise verwenden, um die Netzwerkverbindung zwischen zwei oder mehr Hosts zu überprüfen oder die Internetverbindung zu überprüfen, um festzustellen, ob Sie noch online oder offline sind. Was auch immer der Grund ist, wenn Sie jemals einen Linux-Befehl oder ein Programm wiederholen wollten, bis es erfolgreich endet, wird Ihnen diese Anleitung helfen.

Befehl wiederholen, bis er unter Linux erfolgreich ist

Für die wiederholte Ausführung einer Liste von Befehlen verwenden wir die folgenden BASH-Schleifenkonstrukte :

  1. While-Schleife,
  2. Until-Schleife.

While-Schleife führt den Codeblock aus (umschlossen von do ... done ), wenn die Bedingung wahr ist und führt das so lange aus, bis die Bedingung falsch wird . Sobald die Bedingung falsch wird , wird die While-Schleife beendet.

Bis-Schleife ist genau das Gegenteil von While-Schleife. Es führt den Codeblock aus (umschlossen von do ... done ), wenn die Bedingung false ist und führe das weiter aus, bis die Bedingung wahr wird . Sobald die Bedingung wahr wird , wird die until-Schleife beendet.

Lassen Sie uns zuerst sehen, wie man einen Linux-Befehl oder ein Programm wiederholt, bis es erfolgreich ist, indem man die While-Schleife verwendet.

1. Wiederholen Sie einen Befehl, bis er erfolgreich ist, indem Sie die While-Schleife verwenden

Sehen Sie sich den folgenden Befehl an:

$ während ! ping -c 3 osttechnix.com; schlafen 2; fertig; xcalc

Dieser Befehl versucht weiterhin, die Website ostechnix.com zu pingen. Sobald die Website online geht, endet die While-Schleife und zeigt "xcalc" an Programm. xcalc ist hier optional. Es dient nur zu Benachrichtigungszwecken. Andernfalls müssen wir möglicherweise das Terminalfenster überprüfen, um zu überprüfen, ob der Befehl erfolgreich war oder nicht.

Erklärung:

Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, was jede Anweisung bewirkt.

während ! ping -c 3 osttechnix.com;

Dies ist die bedingte Anweisung. Wie Sie in dieser Anweisung sehen, haben wir dem Ping-Befehl ! vorangestellt Charakter. Es dient als "NICHT" Zustand. Die eigentliche Bedeutung der obigen Zeile ist also - während es NICHT möglich ist, ostechnix.com zu pingen .

Schlaf 2; fertig;

Die Aussage "do sleep 2" , gibt an, dass Sie das System nicht hämmern, indem Sie den Ping-Befehl jede Sekunde wiederholen. Wir weisen das System an, etwas zu warten, z. B. 2 Sekunden, und versuchen dann, ostechnix.com zu pingen. Mit anderen Worten, der While-Befehl pingt die Site weiterhin alle 2 Sekunden an. Sobald die Bedingung falsch wird, wird die While-Schleife beendet.

xcalc;

Starte das xcalc-Programm. Dieses Programm wird erst nach erfolgreicher Ausführung des vorherigen Befehls ausgeführt.

Wenn also die Bedingung wahr ist (d. h. wenn ostechnix.com "NICHT" erreichbar ist), wird gemäß dem obigen Befehl ein Codeblock ausgeführt, der in do...done eingeschlossen ist . Hier lautet der Code "sleep 2". Es wartet also 2 Sekunden und versucht dann erneut, die Site zu pingen. Es wird so lange ausgeführt, bis die Bedingung falsch wird. Sobald die Bedingung falsch wird (d. h. wenn ostechnix.com erreichbar ist), endet die Schleife und schließlich wird das xcalc-Programm geöffnet.

Hier ist die Beispielausgabe des obigen Befehls:

ping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntping:ostechnix.com:Name oder Dienst nicht bekanntPING ostechnix.com (104.26.5.40) 56(84) Datenbytes.64 Bytes von 104.26.5.40 (104.26.5.40 ):icmp_seq=1 ttl=55 Zeit=63,6 ms64 Bytes von 104.26.5.40 (104.26.5.40):icmp_seq=2 ttl=55 Zeit=84,8 ms64 Bytes von 104.26.5.40 (104.26.5.40):icmp_seq=3 ttl=55 Zeit =79,9 ms --- ostechnix.com Ping-Statistiken --- 3 Pakete übertragen, 3 empfangen, 0 % Paketverlust, Zeit 2001 msrtt min/avg/max/mdev =63,602/76,114/84,810/9,068 msWarnung:s kann nicht konvertiert werden tring „-adobe-symbol-*-*-*-*-*-120-*-*-*-*-*-*“, um FontStruct einzugeben

2. Wiederholen Sie einen Befehl, bis er erfolgreich ist, indem Sie die Until-Schleife verwenden

Sie können dies auch mit der "Until"-Schleife wie unten tun.

$ bis ping -c 3 ostechnix.com; schlafen 2; fertig; xcalc

Lassen Sie uns diesen Befehl aufschlüsseln und sehen, was jede Anweisung bewirkt:

bis ping -c 3 ostechnix.com;

Dies ist die bedingte Anweisung. Es bedeutet - pingen bis die Seite erreichbar ist.

Schlaf 2; fertig;

Versuchen Sie, die Site alle 2 Sekunden zu pingen, bis sie erreichbar ist. Sobald die Bedingung wahr wird, d. h. die Site erreichbar ist, wird die Schleife beendet.

xcalc

Starte das xcalc-Programm. Es wird nur nach erfolgreicher Ausführung vorheriger Befehle ausgeführt.

Gemäß dem obigen Befehl pingt die Until-Schleife ostechnix.com so lange an, bis sie erfolgreich ist. Sobald die Site erreichbar ist, endet die until-Schleife und das xcalc-Programm wird geöffnet.

Verwandte Lektüre:

  • So führen Sie für immer alle X Sekunden einen Linux-Befehl aus

3. Wiederholen Sie den vorherigen Befehl, bis er erfolgreich ist

Wir wissen jetzt, wie ein Linux-Befehl ausgeführt wird, bis er erfolgreich beendet wird. Was ist mit dem vorherigen Befehl? Wie wiederholen oder wiederholen Sie die vorherigen Befehle, bis sie erfolgreich sind? Das ist auch einfach!

Wir haben bereits verschiedene Möglichkeiten gepostet, den letzten Befehl zu wiederholen. Wenn Sie nicht wissen, wie es geht, lesen Sie die folgende Anleitung.

  • Verschiedene Möglichkeiten, Ihren letzten Befehl unter Linux zu wiederholen

Wie im obigen Link angegeben, geben Sie zum Ausführen eines zuletzt ausgeführten Befehls einfach doppelte Ausrufezeichen ein , und drücken Sie ENTER wie unten:

$ !!

Dies führt den letzten Befehl aus.

Wenn Sie also vorherige Befehle wiederholen möchten, bis sie mit der While-Schleife erfolgreich sind, führen Sie Folgendes aus:

$ !!; während [$? -ne 0 ]; tun !!; fertig

Um vorherige Befehle zu wiederholen, bis sie mit der Until-Schleife erfolgreich sind, führen Sie Folgendes aus:

$ bis !!; tun :; fertig

Weitere Beispiele zu Bash While-Schleife und Until-Schleife finden Sie in der folgenden Anleitung:

  • Bash-Skripting - While- und Until-Schleife mit Beispielen erklärt

Linux
  1. So führen Sie einen Linux-Befehl für immer alle X Sekunden aus oder wiederholen ihn

  2. So benennen Sie Dateien unter Linux um

  3. So verwenden Sie den Su-Befehl unter Linux

  4. So erstellen Sie ein Skript eines Linux-Befehls

  5. So installieren und verwenden Sie den Ping-Befehl unter Linux

Ping-Befehl unter Linux

So verwenden Sie du Command unter Linux

So erstellen Sie einen Alias ​​unter Linux

So installieren und verwenden Sie den Ping-Befehl unter Linux

Beispiele für Linux-Ping-Befehle

Linux-Ping-Befehl