watch menor comando -n intervalo

18

Qual é o menor intervalo para o comando watch?

A página man e as pesquisas do Google não indicam qual é o menor limite inferior do intervalo. Eu encontrei através da experimentação que pode ser menor que 1 segundo.

Para testar, executei este comando executado em um firewall:

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

Atualiza claramente mais rápido que um segundo, mas não está claro se está realmente fazendo atualizações de 100 ms.

    
por Kyle 20.01.2015 / 16:36

3 respostas

15

Em que plataforma você está?

No meu Linux (Ubuntu 14.10), a página man diz:

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

Eu apenas testei isso com um script chamando um programa C que imprime o timestamp com microssegundos e funciona.

    
por 20.01.2015 / 16:54
10

Na verdade, você está no limite. A página man faz fornecer um valor mínimo (pelo menos no meu 2009, versão Linux). Aqui vai:

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

Provavelmente, você pode verificar isso usando date a watch :

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

Se você observar o primeiro dígito no último campo (nanossegundos), verá que ele aumenta rapidamente, o que significa que, para cada watch de iteração, ~ 100 ms são adicionados.

    
por 20.01.2015 / 16:51
10
O comando

watch está incluído nos utilitários procps .

O menor valor para a opção -n é 0.1 , é codificado em fonte de observação (consulte a linha 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;
    
por 20.01.2015 / 17:27

Tags