comando de observación intervalo más pequeño -n


24

¿Cuál es el intervalo más pequeño para el comando watch?

La página del manual y las búsquedas de Google no indican cuál es el límite inferior del intervalo más pequeño. Descubrí que a través de la experimentación puede ser menor a 1 segundo.

Para probar, ejecuté este comando en un firewall:

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

Se actualiza claramente más rápido que un segundo, pero no está claro si realmente está haciendo actualizaciones de 100 ms.

Respuestas:


22

¿En qué plataforma estás?

En mi Linux (Ubuntu 14.10) la página del manual dice:

 -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.

Acabo de probar esto con un script que llama a un programa C que imprime la marca de tiempo con microsegundos y funciona.


1
La plataforma es CentOS 6.6. La página de manual dice: "[-n <segundos>] De forma predeterminada, el programa se ejecuta cada 2 segundos; use -n o --interval para especificar un intervalo diferente". No especifica cuál es el intervalo más bajo. Gracias por la aclaración.
Kyle

11

En realidad, estás en el límite. La página del manual no proporciona un valor mínimo (al menos en mi, la versión Linux 2009). Aquí va:

-n, --interval seconds
Specify update interval. The command will not allow quicker 
than 0.1 second interval, in which the smaller values are converted.

Es probable que pueda comprobar que mediante el uso datea través de watch:

$ watch -n0.1 date +'%H:%M:%S:%N'

Si observa el primer dígito en el último campo (nanosegundos), verá que se incrementa rápidamente, lo que significa que por cada watchiteración, se agregan ~ 100 ms.


10

watchEl comando está incluido en las utilidades de procps .

El valor más pequeño para la -nopción es 0.1, está codificado en la fuente del reloj (vea la línea 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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.