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

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

Es gibt einen eingebauten Unix-Befehl repeat dessen erstes Argument die Anzahl der Wiederholungen eines Befehls ist, wobei der Befehl (mit beliebigen Argumenten) durch die verbleibenden Argumente für repeat angegeben wird .

Zum Beispiel

% repeat 100 echo "I will not automate this punishment."

wird die gegebene Zeichenkette 100 Mal echoen und dann stoppen.

Ich hätte gerne einen ähnlichen Befehl – ​​nennen wir ihn forever – das funktioniert ähnlich, außer dass das erste Argument die Anzahl der Sekunden ist, die zwischen Wiederholungen pausiert werden soll, und es wiederholt sich für immer. Zum Beispiel

% forever 5 echo "This will get echoed every 5 seconds forever and ever."

Ich dachte, ich frage, ob so etwas existiert, bevor ich es schreibe. Ich weiß, dass es wie ein zweizeiliges Perl- oder Python-Skript ist, aber vielleicht gibt es einen Standardweg, dies zu tun. Wenn nicht, können Sie gerne eine Lösung in Ihrer bevorzugten Skriptsprache posten.

PS:Vielleicht wäre es besser, repeat zu verallgemeinern um sowohl die Anzahl der Wiederholungen (wobei -1 unendlich bedeutet) als auch die Anzahl der Sekunden zwischen den Wiederholungen zu nehmen.
Die obigen Beispiele würden dann zu:

% repeat 100 0 echo "I will not automate this punishment."
% repeat -1 5 echo "This will get echoed every 5 seconds forever."

Akzeptierte Antwort:

Probieren Sie die watch aus Befehl.

Usage: watch [-dhntv] [--differences[=cumulative]] [--help] [--interval=<n>] 
             [--no-title] [--version] <command>`

Damit:

watch -n1  command

führt den Befehl jede Sekunde aus (naja, technisch gesehen jede Sekunde plus die Zeit, die für command benötigt wird um als watch ausgeführt zu werden (zumindest die procps und busybox Implementierungen) schläft nur eine Sekunde zwischen zwei Ausführungen von command ), für immer.

Möchten Sie den Befehl an exec übergeben statt sh -c verwenden Sie -x Möglichkeit:

watch -n1 -x command

Unter macOS erhalten Sie watch von Mac Ports:

port install watch

Oder Sie können es von Homebrew bekommen:

brew install watch

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

  2. Watch:Unix-Befehle oder Shell-Skripte alle N Sekunden wiederholen

  3. 5 UNIX / Linux Traceroute-Befehlsbeispiele

  4. tail-Befehlsbeispiele in UNIX/Linux

  5. Probleme mit der Netcat-Befehlszeile

Grep-Befehl unter Linux/UNIX

ls-Befehl unter Linux/UNIX

cp-Befehl unter Linux/UNIX

Finden Sie Befehl in Linux/UNIX

Verwendung von Telnet-Befehlen unter Linux/Unix

Unix LS-Befehl:15 praktische Beispiele