
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 watch
den 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 watch
Befehls und seiner Optionen erhalten Sie, indem Sie man watch
diesen 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 ls
im 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.
watch
interpretiert ANSI-Farbsequenzen und übergibt Escape-Zeichen mit der Option-c
oder--color
. Die Ausgabe von funktioniert beispielsweise,pygmentize
schlägt jedoch für fehlls --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:
Obwohl
watch
es unter Ubuntu einwandfrei funktioniert, sollten Sie dies vermeiden, wenn Sie möchten, dass Ihr „Unix-fu“ rein ist. Unter FreeBSDwatch
gibt es beispielsweise einen Befehl, um „eine andere TTY-Zeile auszuspionieren“.while true; do command; sleep SECONDS; done
Ctrlhat 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,
SECONDS
bevor der Befehl zum ersten Mal ausgeführt wird.
Antwort4
Sie können crontab verwenden. Führen Sie den Befehl aus crontab -e
und ö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