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

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

Ein Systemadministrator muss häufig einen Befehl in bestimmten Zeiträumen wiederholt ausführen. Oft lassen sich solche Aufgaben einfach mit einfachen Cron-Befehlen erledigen. 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 dieser Anleitung lernen Sie eine einfache Skripttechnik zum Überwachen oder Behalten eines bestimmten Befehls im kontinuierlich ausgeführten Zustand, ä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 diskutieren, warum Sie so oft Befehle ausführen müssen. Ich glaube, jeder hat dafür andere Gründe in seiner täglichen Arbeit oder sogar zu Hause an PCs und Laptops.

1. Verwenden Sie den Watch-Befehl

Ansehen ist ein Linux-Befehl, mit dem Sie einen Befehl oder ein Programm regelmäßig ausführen können und der Ihnen auch die Ausgabe auf dem Bildschirm anzeigt. 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 leicht an Ihre Anforderungen angepasst werden.

Speichernutzung überwachen

„Watch“ ist extrem einfach zu bedienen, 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 freien Befehls alle zwei Sekunden.

Wie in der obigen Ausgabe zu sehen, haben Sie eine Kopfzeile, die Informationen über (von links nach rechts) das Aktualisierungsintervall, den ausgeführten Befehl und die aktuelle Uhrzeit anzeigt. Wenn Sie diesen Header ausblenden möchten, können Sie das -t verwenden Option.

Die nächste logische Frage ist – wie man das Ausführungsintervall ändert. Zu diesem Zweck können Sie das -n verwenden Option, 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 script.sh ausführen Datei alle 10 Sekunden, können Sie es so machen:

# watch -n 10 script.sh

Hinweis Wenn Sie den Befehl wie oben gezeigt ausführen, müssen Sie cd in das Verzeichnis (lernen Sie 15 Beispiele für cd-Befehle), in dem sich das Skript befindet, oder geben Sie anderweitig den vollständigen Pfad zu diesem Skript an.

Weitere nützliche Optionen des Watch-Befehls sind:

  1. -b – erzeugt einen Piepton, wenn das Ende des Befehls nicht null ist.
  2. -c – Interpretiert ANSI-Farbfolgen.
  3. -d – hebt die Änderungen in der Befehlsausgabe hervor.

Angemeldete Benutzer, Betriebszeit und durchschnittliche Auslastung überwachen

Angenommen, Sie möchten angemeldete Benutzer, die Serverbetriebszeit und die durchschnittliche Lastausgabe in einer kontinuierlichen Phase alle paar Sekunden überwachen, und verwenden Sie dann den folgenden Befehl wie gezeigt:

# watch uptime

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

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

Fortschritt des Kopierbefehls überwachen

Unter Linux beim Kopieren von Dateien von einem Ort zum anderen mit cp Befehl wird der Fortschritt der Daten nicht angezeigt, um den Fortschritt der kopierten Daten zu sehen, können Sie 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, schlage ich vor, dass Sie den Befehl Advance copy verwenden, der den Fortschritt der Daten während des Kopierens anzeigt.

2. Verwenden Sie den Schlafbefehl

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

Wenn Sie mit Bash-Skripten noch nicht vertraut sind, können Sie hier unsere Anleitung zu Bash-Schleifen lesen.

Falls Sie zum ersten Mal von "sleep" hören Befehl, wird es verwendet, um etwas für eine bestimmte Zeit 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 obigen Schleifen können Sie bash anweisen, einen Befehl auszuführen, schlafen für N Sekunden und führen Sie den Befehl dann erneut aus.

Unten sehen Sie Beispiele für beide Schleifen:

for-Schleife-Beispiel

# 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, mit 5 Sekunden Pause 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 das Echo ändern und Datum Befehle mit Ihren eigenen Befehlen oder Skripten und ändern Sie das Ruheintervall nach Ihren Bedürfnissen.

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 vom Nutzer beendet oder unterbrochen wird. Es kann praktisch sein, wenn Sie einen im Hintergrund laufenden Befehl 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, um die Ausführung vor der nächsten Ausführung zu beenden.

Schlussfolgerung

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

  1. Verwenden Sie cron, wenn Sie regelmäßig Befehle ausführen müssen, auch nach Systemneustarts.
  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 wie immer nicht, diese im Kommentarbereich unten einzureichen.


Linux
  1. So verwenden Sie den Su-Befehl unter Linux

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

  3. Wiederholen Sie einen Unix-Befehl alle X Sekunden für immer?

  4. So protokollieren Sie jeden Shell-Befehl in Linux

  5. Linux:Wie man einen Befehl in einem bestimmten Verzeichnis ausführt

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

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

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

Wie kann ich unter Linux meinen Webcam-Feed ansehen?