Wie man einen Linux-Befehl alle X Sekunden für immer ausführt oder wiederholt

A system administrator often needs to run a command repeatedly in a certain periods of time. Often such tasks can be easily completed with simple cron commands. In most of the cases  this should work, but the shortest period which you can run cron command is every 1 minute. Believe it or not, in many cases this is too slow.

Run Linux Command Every Second

In diesem Tutorial lernen Sie einfache Skripting-Techniken, um einen bestimmten Befehl kontinuierlich im laufenden Zustand zu überwachen, ähnlich dem Befehl top (Prozess- und Speicherauslastung kontinuierlich überwachen) standardmäßig alle 3 Sekunden.

Wir werden nicht aufhören, die Gründe zu diskutieren, warum Sie Befehle so oft ausführen müssten. Ich glaube, jeder hat unterschiedliche Gründe dafür in seinem täglichen Berufsleben oder sogar zu Hause auf PCs und Laptops.

1. Verwenden Sie den Befehl

Watch ist ein Linux-Befehl, der es Ihnen ermöglicht, einen Befehl oder ein Programm periodisch auszuführen und Ihnen auch die Ausgabe auf dem Bildschirm anzuzeigen. Das 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 leicht geändert werden, um Ihren Anforderungen gerecht zu werden.

Überwachen Sie den Speicherverbrauch

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

# watch free -m

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

Monitor Memory Usage in Linux

Wie aus der obigen Ausgabe ersichtlich ist, haben Sie eine Überschrift, die Informationen zur (von links nach rechts) Aktualisierungsintervall, ausgeführten Befehl und aktuellen Zeitpunkt anzeigt. Wenn Sie diese Überschrift 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. Angenommen, Sie möchten Ihre Datei script.sh alle 10 Sekunden ausführen, können Sie dies wie folgt tun:

# watch -n 10 script.sh

Anmerkung, dass wenn Sie den Befehl wie oben gezeigt ausführen, müssen Sie in das Verzeichnis wechseln (lernen Sie 15 Beispiele für den cd-Befehl), in dem das Skript liegt, oder den vollständigen Pfad zu diesem Skript angeben.

Weitere nützliche Optionen des watch-Befehls sind:

  1. -b – erzeugt einen Piepton, wenn der Exit-Code des Befehls ungleich null ist.
  2. -c – Interprets ANSI-Farbcodes.
  3. -d – hebt die Änderungen in der Befehlsausgabe hervor.

Überwachen Sie angemeldete Benutzer, die Betriebszeit und die durchschnittliche Auslastung

Angenommen, Sie möchten angemeldete Benutzer, die Server-Betriebszeit und die durchschnittliche Auslastung kontinuierlich alle paar Sekunden überwachen, verwenden Sie dann folgenden Befehl wie gezeigt:

# watch uptime
Watch Linux Load Average

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

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

Überwachen Sie den Fortschritt des Kopierbefehls

Beim Kopieren von Dateien von einem Ort zum anderen unter Linux mit dem cp-Befehl wird der Fortschritt der Daten nicht angezeigt. Um den Fortschritt des kopierten Daten zu sehen, können Sie den watch-Befehl zusammen mit dem du -s Befehl verwenden, 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 
Monitor Progress of Copy Command

Wenn Sie denken, dass der obige Prozess zu kompliziert ist, können Sie stattdessen den fortgeschrittenen Kopierbefehl verwenden, der den Fortschritt der Daten während des Kopierens anzeigt.

2. Verwenden Sie den sleep-Befehl

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

Wenn Sie neu im Bash-Skripting sind, können Sie unseren Leitfaden zu Bash-Schleifen hier überprüfen.

Falls dies das erste Mal ist, dass Sie vom "sleep"-Befehl hören, wird er verwendet, um etwas für eine angegebene Zeit zu verzögern. In Skripten können Sie ihn verwenden, um Ihrem Skript zu sagen, Befehl 1 auszuführen, 10 Sekunden zu warten und dann Befehl 2 auszuführen.

Mit den obigen Schleifen können Sie Bash sagen, einen Befehl auszuführen, N Sekunden zu schlafen und dann den Befehl erneut auszuführen.

Unten finden Sie Beispiele für beide Schleifen:

for-Schleifenbeispiel

# 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 10 Mal an, mit einer Pause von 5 Sekunden zwischen den Ausführungen.

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 Datum durch Ihre eigenen Befehle oder Skripte ersetzen und das Pausenintervall entsprechend Ihren Bedürfnissen ändern.

while-Schleifenbeispiel

# 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 vom Benutzer beendet oder unterbrochen wird. Es kann nützlich sein, wenn Sie einen Befehl im Hintergrund ausführen müssen und nicht auf cron vertrauen möchten.

Wichtig: Bei Verwendung der obigen Methoden wird dringend empfohlen, das Intervall lang genug zu setzen, um Ihrem Befehl genügend Zeit zu geben, um vor der nächsten Ausführung fertig zu werden.

Schlussfolgerung

Die Beispiele in diesem Tutorial sind nützlich, sollen aber das cron-Dienstprogramm nicht vollständig ersetzen. Es liegt an Ihnen herauszufinden, welches besser für Sie funktioniert, aber wenn wir die Verwendung beider Techniken trennen müssten, würde ich dies sagen:

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

Wie immer, wenn Sie Fragen oder Kommentare haben, zögern Sie nicht, sie im Kommentarbereich unten zu hinterlassen.

Source:
https://www.tecmint.com/run-repeat-linux-command-every-x-seconds/