Einen Befehl im Terminal alle x Zeitintervalle wiederholen?

Einen Befehl im Terminal alle x Zeitintervalle wiederholen?

Wie kann ichwiederholenein Befehl in jedem Zeitintervall, so dass es mir erlaubt, Befehle auszuführen fürÜberprüfung oderÜberwachung Verzeichnisse?

Es ist kein Skript erforderlich, ich brauche nur einen einfachen Befehl, der im Terminal ausgeführt wird.

Antwort1

Sie können watchden Befehl verwenden,betrachtenwird verwendet, um einen bestimmten Befehl in regelmäßigen Abständen auszuführen.

Öffnen Sie Terminal und geben Sie ein:

watch -n x <your command>

ändernXum die gewünschte Zeit in Sekunden einzustellen.

Weitere Hilfe zur Verwendung des watchBefehls und seiner Optionen erhalten Sie, indem Sie man watchdiesen Befehl ausführen oder besuchen.Verknüpfung.

Zum Beispiel :Im Folgenden werden alle60er Jahre, auf demselben Terminal, den Inhalt des Desktop-Verzeichnisses, damit Sie wissen, ob Änderungen stattgefunden haben:

watch -n 60 ls -l ~/Desktop

Antwort2

Sie können diesen Befehl auch im Terminal verwenden, abgesehen vonnux's Antwort:

while true; do <your_command>; sleep <interval_in_seconds>; done

Beispiel:

while true; do ls; sleep 2; done

Dieser Befehl druckt die Ausgabe lsim Abstand von 2 Sekunden.

Mit Ctrl+ Ckönnen Sie den Vorgang abbrechen.

Es gibt einige Nachteile von watch:

  • Es können keine Aliasbefehle verwendet werden.
  • Wenn die Ausgabe eines Befehls sehr lang ist, funktioniert das Scrollen nicht richtig.
  • Es gibt einige Probleme beim Einstellen dermaximales Zeitintervallüber einem bestimmten Wert.
  • watchinterpretiert ANSI-Farbsequenzen und übergibt Escape-Zeichen mit der Option -coder --color. Die Ausgabe von funktioniert beispielsweise, pygmentizeschlägt jedoch für fehl ls --color=auto.

Unter den oben genannten Umständen scheint dies die bessere Option zu sein.

Antwort3

Ich wollte nur meinen Teil dazu beitragen,Sourav C.'s undnuxAntworten von:

  1. Obwohl watches unter Ubuntu einwandfrei funktioniert, sollten Sie dies vermeiden, wenn Sie möchten, dass Ihr „Unix-fu“ rein ist. Unter FreeBSD watchgibt es beispielsweise einen Befehl, um „eine andere TTY-Zeile auszuspionieren“.

  2. while true; do command; sleep SECONDS; doneCtrlhat auch einen Vorbehalt: Ihr Befehl könnte mit + schwieriger zu beenden sein C. Sie könnten Folgendes vorziehen:

    while sleep SECONDS; do command; done
    

    Es ist nicht nur kürzer, sondern auch leichter zu unterbrechen. Der Vorbehalt ist, dass es zuerst in den Ruhezustand wechselt und dann Ihren Befehl ausführt. Sie müssen also etwas warten, SECONDSbevor der Befehl zum ersten Mal ausgeführt wird.

Antwort4

Sie können crontab verwenden. Führen Sie den Befehl aus crontab -eund öffnen Sie ihn mit Ihrem bevorzugten Texteditor. Fügen Sie dann diese Zeile hinzu

*/10 * * * *  /path-to-your-command

Dadurch wird Ihr Befehl alle 10 Minuten ausgeführt

* */4 * * *  /path-to-your-command

Dadurch wird Ihr Befehl alle 4 Stunden ausgeführt

Eine weitere mögliche Lösung

$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done

XAnzahl der Wiederholungen.

YZeit zum Warten auf die Wiederholung.

Beispiel :

$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done

verwandte Informationen