Repetir um comando a cada x intervalo de tempo no terminal?

Repetir um comando a cada x intervalo de tempo no terminal?

Como possorepitaum comando a cada intervalo de tempo, para que me permita executar comandos paraverificando oumonitoramento diretórios?

Não há necessidade de script, preciso apenas de um comando simples para ser executado no terminal.

Responder1

Você pode usar watcho comando,assistiré usado para executar qualquer comando designado em intervalos regulares.

Abra o Terminal e digite:

watch -n x <your command>

mudarxpara ser o tempo em segundos que você deseja.

Para obter mais ajuda sobre o uso do watchcomando e suas opções, execute man watchou visite esteLink.

Por exemplo :o seguinte irá listar, cadaanos 60, no mesmo Terminal, o conteúdo do diretório Desktop para que você possa saber se ocorreu alguma alteração:

watch -n 60 ls -l ~/Desktop

Responder2

Você também pode usar este comando no terminal, além deresposta do nux:

while true; do <your_command>; sleep <interval_in_seconds>; done

Exemplo:

while true; do ls; sleep 2; done

Este comando imprimirá a saída lsem um intervalo de 2 segundos.

Use Ctrl+ Cpara interromper o processo.

Existem algumas desvantagens de watch:

  • Ele não pode usar nenhum comando com alias.
  • Se a saída de qualquer comando for muito longa, a rolagem não funcionará corretamente.
  • Há alguns problemas para definir ointervalo máximo de tempoalém de um determinado valor.
  • watchinterpretará sequências de cores ANSI passando caracteres de escape usando a opção -cou --color. Por exemplo, a saída de pygmentizefuncionará, mas falhará em ls --color=auto.

Nas circunstâncias acima, esta pode parecer uma opção melhor.

Responder3

Só queria contribuir parasourav c.'areianuxrespostas de:

  1. Embora watchfuncione perfeitamente no Ubuntu, você pode querer evitar isso se quiser que seu "Unix-fu" seja puro. No FreeBSD, por exemplo, watché um comando para "bisbilhotar outra linha tty".

  2. while true; do command; sleep SECONDS; donetambém tem uma ressalva: seu comando pode ser mais difícil de matar usando Ctrl+ C. Você pode preferir:

    while sleep SECONDS; do command; done
    

    Não é apenas mais curto, mas também mais fácil de interromper. A ressalva é que ele primeiro irá dormir e depois executará seu comando, então você precisará esperar um pouco SECONDSantes que a primeira ocorrência do comando aconteça.

Responder4

você pode usar o crontab. execute o comando crontab -ee abra-o com seu editor de texto preferido e adicione esta linha

*/10 * * * *  /path-to-your-command

Isso executará seu comando a cada 10 minutos

* */4 * * *  /path-to-your-command

Isso executará seu comando a cada 4 horas

Outra solução possível

$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done

Xnúmero de vezes para repetir.

Stempo de esperar para repetir.

Exemplo :

$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done

informação relacionada