watchコマンド最小-n間隔

watchコマンド最小-n間隔

監視コマンドの最小間隔はいくらですか?

マニュアルページと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ミリ秒が追加されることを意味します。

関連情報