घड़ी आदेश सबसे छोटा-अंतराल


24

वॉच कमांड के लिए सबसे छोटा अंतराल क्या है?

मैन पेज और Google खोजों से यह संकेत नहीं मिलता है कि सबसे छोटी अंतराल कम सीमा क्या है। मैंने प्रयोग के माध्यम से पाया कि यह 1 सेकंड से छोटा हो सकता है।

परीक्षण करने के लिए, मैंने इस कमांड को फ़ायरवॉल पर चलाया:

watch -n 0.1 cat /sys/class/net/eth1/statistics/rx_bytes

यह स्पष्ट रूप से एक सेकंड से अधिक तेजी से अपडेट करता है, लेकिन यह स्पष्ट नहीं है कि क्या यह वास्तव में 100ms अपडेट कर रहा है।

जवाबों:


22

आप किस मंच पर हैं?

मेरे लिनक्स (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.

मैंने अभी एक सी-प्रोग्राम को कॉल करने वाली स्क्रिप्ट के साथ यह परीक्षण किया है जो माइक्रोसेकंड के साथ टाइमस्टैम्प को प्रिंट करता है और यह काम करता है।


1
प्लेटफार्म CentOS 6.6 है। मैन पेज बताता है: "[-n <सेकंड>] डिफ़ॉल्ट रूप से, प्रोग्राम हर 2 सेकंड में चलाया जाता है; एक अलग अंतराल निर्दिष्ट करने के लिए उपयोग -n या --interval।" यह निर्दिष्ट नहीं करता है कि सबसे कम अंतराल क्या है। स्पष्टीकरण के लिए धन्यवाद।
काइल

11

वास्तव में, आप सीमा पर हैं। मैन पेज न्यूनतम मूल्य प्रदान करता है (कम से कम मेरे 2009, लिनक्स संस्करण पर)। ये रहा:

-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पुनरावृत्ति के लिए, ~ 100ms जोड़े जाते हैं।


10

watchआदेश में शामिल है procps उपयोगिताओं।

-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;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.