watch 命令的最小间隔是多少?
手册页和 Google 搜索并未表明最小间隔下限是多少。我通过实验发现可以小于1秒。
为了进行测试,我在防火墙上运行了以下命令:
watch -n 0.1 cat /sys/class/net/eth1/statistics/rx_bytes
显然更新速度超过一秒,但不清楚是否真的在进行 100 毫秒更新。
答案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
您也许可以通过使用through来检查watch
:
$ watch -n0.1 date +'%H:%M:%S:%N'
如果您查看最后一个字段中的第一位数字(纳秒),您会发现它快速递增,这意味着每次watch
迭代都会添加约 100 毫秒。