GNU/Linux >> Linux Esercitazione >  >> Linux

Ripeti un comando Unix ogni X secondi per sempre?

C'è un comando Unix integrato repeat il cui primo argomento è il numero di volte per ripetere un comando, dove il comando (con qualsiasi argomento) è specificato dagli argomenti rimanenti da repeat .

Ad esempio,

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

farà eco alla stringa data 100 volte e poi si fermerà.

Vorrei un comando simile:chiamiamolo forever – funziona in modo simile tranne che il primo argomento è il numero di secondi di pausa tra le ripetizioni e si ripete all'infinito. Ad esempio,

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

Ho pensato di chiedere se esiste una cosa del genere prima di scriverla. So che è come uno script Perl o Python a 2 righe, ma forse c'è un modo più standard per farlo. In caso contrario, sentiti libero di pubblicare una soluzione nel tuo linguaggio di scripting preferito.

PS:Forse un modo migliore per farlo sarebbe generalizzare repeat per prendere sia il numero di volte da ripetere (con -1 che significa infinito) sia il numero di secondi per dormire tra le ripetizioni.
Gli esempi precedenti diventerebbero quindi:

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

Risposta accettata:

Prova l'watch comando.

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

In modo che:

watch -n1  command

eseguirà il comando ogni secondo (beh, tecnicamente, ogni secondo più il tempo impiegato per command da eseguire come watch (almeno il procps e busybox implementazioni) dorme solo un secondo tra due esecuzioni di command ), per sempre.

Vorresti passare il comando a exec invece di sh -c , usa -x opzione:

watch -n1 -x command

Su macOS, puoi ottenere watch dalle porte Mac:

port install watch

Oppure puoi ottenerlo da Homebrew:

brew install watch

Linux
  1. Come eseguire o ripetere un comando Linux ogni X secondi per sempre

  2. UNIX / Linux:10 esempi di comandi Netstat

  3. Guarda:ripeti i comandi Unix o gli script della shell ogni N secondi

  4. esempi di comandi tail in UNIX/Linux

  5. Problemi con la riga di comando di Netcat

Comando Grep in Linux/UNIX

comando ls in Linux/UNIX

comando cp in Linux/UNIX

Trova comando in Linux/UNIX

Utilizzo dei comandi Telnet in Linux/Unix

Comando Unix LS:15 esempi pratici