GNU/Linux >> Linux の 問題 >  >> Linux

X秒ごとにUnixコマンドを永遠に繰り返しますか?

組み込みのUnixコマンドrepeatがあります その最初の引数はコマンドを繰り返す回数です。ここで、コマンド(任意の引数を含む)は、repeatの残りの引数によって指定されます。 。

たとえば、

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

指定された文字列を100回エコーしてから、停止します。

同様のコマンドが欲しいのですが、foreverと呼びましょう –これは、最初の引数が繰り返しの間に一時停止する秒数であり、永久に繰り返されることを除いて、同様に機能します。たとえば、

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

書く前にそういうものがないか聞いてみようと思いました。 2行のPerlまたはPythonスクリプトのようなものですが、これを行うためのより標準的な方法があるかもしれません。そうでない場合は、お好きなスクリプト言語で解決策を投稿してください。

PS:これを行うためのより良い方法は、repeatを一般化することかもしれません。 繰り返す回数(-1は無限大を意味します)と繰り返しの間にスリープする秒数の両方を取得します。
上記の例は次のようになります。

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

承認された回答:

watchをお試しください コマンド。

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

つまり:

watch -n1  command

コマンドは毎秒実行されます(技術的には、1秒ごとに加えてcommandにかかる時間 watchとして実行する (少なくともprocps およびbusybox 実装)commandの2回の実行の間に1秒間スリープします )、永遠に。

コマンドをexecに渡しますか sh -cの代わりに 、-xを使用します オプション:

watch -n1 -x command

macOSでは、watchを入手できます Macポートから:

port install watch

または、Homebrewから入手できます:

brew install watch

Linux
  1. X秒ごとにLinuxコマンドを実行または繰り返す方法

  2. UNIX / Linux:10 の Netstat コマンドの例

  3. 5 UNIX / Linux の traceroute コマンドの例

  1. 10 Linux / UNIX での Xargs コマンドの例

  2. UNIX / Linux :最後のコマンドを繰り返す bash history コマンドの例

  3. UNIX/Linux での tail コマンドの例

  1. コマンドの標準をT秒間破棄しますか?

  2. 視聴:N 秒ごとに Unix コマンドまたはシェル スクリプトを繰り返す

  3. Netcat コマンド ラインの問題