Website-Suche

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


Ein Systemadministrator muss einen Befehl häufig in bestimmten Zeiträumen wiederholt ausführen. Oftmals können solche Aufgaben einfach mit einfachen Cron-Befehlen erledigt werden. In den meisten Fällen sollte dies funktionieren, aber der kürzeste Zeitraum, in dem Sie den Cron-Befehl ausführen können, ist alle 1 Minute. Ob Sie es glauben oder nicht, in vielen Fällen ist dies zu langsam.

In diesem Tutorial lernen Sie einfache Skripttechniken kennen, um einen bestimmten Befehl im kontinuierlich ausgeführten Zustand zu überwachen oder im Auge zu behalten, ähnlich dem Top-Befehl (kontinuierliche Überwachung des Prozesses und der Speicherauslastung), standardmäßig alle 3 Sekunden.

Wir werden nicht aufhören, die Gründe zu besprechen, warum Sie Befehle so oft ausführen müssen. Ich glaube, jeder hat unterschiedliche Gründe dafür, sei es bei der täglichen Arbeit oder sogar bei den heimischen PCs und Laptops.

1. Verwenden Sie den Befehl „watch“.

Watch ist ein Linux-Befehl, der es Ihnen ermöglicht, einen Befehl oder ein Programm regelmäßig auszuführen und die Ausgabe auch auf dem Bildschirm anzuzeigen. Dies bedeutet, dass Sie die Programmausgabe rechtzeitig sehen können. Standardmäßig führt Watch den Befehl/das Programm alle 2 Sekunden erneut aus. Das Intervall kann ganz einfach an Ihre Anforderungen angepasst werden.

Überwachen Sie die Speichernutzung

„Watch“ ist äußerst einfach zu verwenden. Um es zu testen, können Sie sofort ein Linux-Terminal starten und den folgenden Befehl eingeben:

watch free -m

Der obige Befehl überprüft den freien Speicher Ihres Systems und aktualisiert die Ergebnisse des Befehls „free“ alle zwei Sekunden.

Wie in der obigen Ausgabe zu sehen ist, verfügen Sie über einen Header, der Informationen zum Aktualisierungsintervall (von links nach rechts), zum ausgeführten Befehl und zur aktuellen Uhrzeit anzeigt. Wenn Sie diesen Header ausblenden möchten, können Sie die Option -t verwenden.

Die nächste logische Frage ist: Wie ändert man das Ausführungsintervall? Zu diesem Zweck können Sie die Option -n verwenden, die das Intervall angibt, in dem der Befehl ausgeführt wird. Dieses Intervall wird in Sekunden angegeben. Nehmen wir also an, Sie möchten Ihre Datei script.sh alle 10 Sekunden ausführen. Sie können das folgendermaßen tun:

watch -n 10 script.sh

Beachten Sie: Wenn Sie den Befehl wie oben gezeigt ausführen, müssen Sie mit cd in das Verzeichnis wechseln (lernen Sie 15 cd-Befehlsbeispiele kennen), wo Geben Sie an, ob sich das Skript befindet, oder geben Sie auf andere Weise den vollständigen Pfad zu diesem Skript an.

Weitere nützliche Optionen des Watch-Befehls sind:

  1. -b – erzeugt einen Piepton, wenn der Ausgang des Befehls ungleich Null ist.
  2. -c – Interpretiert ANSI-Farbsequenzen.
  3. -d – hebt die Änderungen in der Befehlsausgabe hervor.

Überwachen Sie angemeldete Benutzer, Betriebszeit und Lastdurchschnitt

Nehmen wir an, Sie möchten angemeldete Benutzer, die Serververfügbarkeit und die durchschnittliche Auslastung in kontinuierlichen Phasen alle paar Sekunden überwachen und dann den folgenden Befehl wie gezeigt verwenden:

watch uptime

Um den Befehl zu beenden, drücken Sie STRG+C.

Hier wird der Befehl 'uptime' standardmäßig alle 2 Sekunden ausgeführt und zeigt die aktualisierten Ergebnisse an.

Überwachen Sie den Fortschritt des Kopierbefehls

Unter Linux wird beim Kopieren von Dateien von einem Speicherort an einen anderen mit dem Befehl cp der Fortschritt der Daten nicht angezeigt. Um den Fortschritt der kopierten Daten zu sehen, können Sie den Befehl watch verwenden -Befehl zusammen mit dem Befehl du -s, um die Festplattennutzung in Echtzeit zu überprüfen.

cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Wenn Sie der Meinung sind, dass der obige Vorgang zu kompliziert ist, empfehle ich Ihnen, den Befehl „Erweitertes Kopieren“ zu wählen, der den Fortschritt der Daten während des Kopierens anzeigt.

2. Verwenden Sie den Befehl „sleep“.

Sleep wird oft zum Debuggen von Shell-Skripten verwendet, hat aber auch viele andere nützliche Zwecke. In Kombination mit for- oder while-Schleifen können Sie beispielsweise ziemlich beeindruckende Ergebnisse erzielen.

Wenn Sie mit Bash-Scripting noch nicht vertraut sind, können Sie hier unseren Leitfaden zu Bash-Schleifen lesen.

Falls Sie zum ersten Mal vom Befehl "sleep" hören, wird er verwendet, um etwas um eine bestimmte Zeitspanne zu verzögern. In Skripten können Sie es verwenden, um Ihr Skript anzuweisen, Befehl 1 auszuführen, 10 Sekunden zu warten und dann Befehl 2 auszuführen.

Mit den oben genannten Schleifen können Sie Bash anweisen, einen Befehl auszuführen, N Sekunden lang in den Ruhezustand zu versetzen und den Befehl dann erneut auszuführen.

Unten sehen Sie Beispiele für beide Schleifen:

Beispiel für eine for-Schleife

for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Der obige Einzeiler führt den Echo-Befehl aus und zeigt das aktuelle Datum insgesamt zehnmal an, wobei zwischen den Ausführungen 5 Sekunden Ruhezeit liegen.

Hier ist eine Beispielausgabe:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Sie können die Befehle echo und date mit Ihren eigenen Befehlen oder Skripten ändern und das Ruheintervall nach Ihren Bedürfnissen ändern.

while-Schleife Beispiel

while true; do echo -n "This is a test of while loop";date ; sleep 5; done

Hier ist eine Beispielausgabe:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Der obige Befehl wird ausgeführt, bis er entweder abgebrochen oder vom Benutzer unterbrochen wird. Dies kann nützlich sein, wenn Sie einen Befehl im Hintergrund ausführen müssen und sich nicht auf cron verlassen möchten.

Wichtig: Wenn Sie die oben genannten Methoden verwenden, wird dringend empfohlen, dass Sie das Intervall lang genug einstellen, damit Ihr Befehl genügend Zeit hat, die Ausführung vor der nächsten Ausführung abzuschließen.

Abschluss

Die Beispiele in diesem Tutorial sind nützlich, sollen das Cron-Dienstprogramm jedoch nicht vollständig ersetzen. Es liegt an Ihnen, herauszufinden, welche für Sie besser funktioniert. Wenn wir jedoch die Verwendung beider Techniken trennen müssen, würde ich Folgendes sagen:

  1. Verwenden Sie cron, wenn Sie auch nach Systemneustarts regelmäßig Befehle ausführen müssen.
  2. Verwenden Sie die in diesem Tutorial erläuterten Methoden für Programme/Skripte, die innerhalb der aktuellen Benutzersitzung ausgeführt werden sollen.

Wenn Sie Fragen oder Kommentare haben, zögern Sie nicht, diese wie immer im Kommentarbereich unten einzureichen.