監視コマンドの最小間隔はいくらですか?
マニュアルページとGoogle検索では、最小間隔の下限が何であるかを示していません。 1秒未満である可能性があることを実験を通して調べました。
テストするために、ファイアウォールで次のコマンドを実行しました。
watch -n 0.1 cat /sys/class/net/eth1/statistics/rx_bytes
明らかにアップデートは1秒より速いですが、100msのアップデートが実際に行われているかどうかはわかりません。
答え1
どのプラットフォームを使用していますか?
私のLinux(Ubuntu 14.10)でマニュアルページ説明する:
-n, --interval seconds
Specify update interval. The command will not allow quicker
than 0.1 second interval, in which the smaller values are con‐
verted.
私はマイクロ秒単位でタイムスタンプを印刷するCプログラムを呼び出すスクリプトを使ってこれをテストしましたが、うまくいきました。
答え2
watch
コマンドは以下に含まれています。プロセス公共施設。
オプションの最小値は-n
であり、0.1
ハードコーディングされています。ソースコードを見る(171 - 172行を参照):
case 'n':
{
char *str;
interval = strtod(optarg, &str);
if (!*optarg || *str)
do_usage();
if(interval < 0.1)
interval = 0.1;
if(interval > ~0u/1000000)
interval = ~0u/1000000;
}
break;
答え3
実際に限界に達しました。マニュアルページする最小値を提供します(少なくとも2009 Linuxバージョンでは)。問題は次のとおりです。
-n, --interval seconds
Specify update interval. The command will not allow quicker
than 0.1 second interval, in which the smaller values are converted.
date
以下を使用してこれを確認できますwatch
。
$ watch -n0.1 date +'%H:%M:%S:%N'
最後のフィールドの最初の数字(ナノ秒)を見ると、急速に増加することがわかります。これは、watch
各反復に約100ミリ秒が追加されることを意味します。