
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 watch
o 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 watch
comando e suas opções, execute man watch
ou 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 ls
em 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.
watch
interpretará sequências de cores ANSI passando caracteres de escape usando a opção-c
ou--color
. Por exemplo, a saída depygmentize
funcionará, mas falhará emls --color=auto
.
Nas circunstâncias acima, esta pode parecer uma opção melhor.
Responder3
Só queria contribuir parasourav c.'areianuxrespostas de:
Embora
watch
funcione 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".while true; do command; sleep SECONDS; done
també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
SECONDS
antes que a primeira ocorrência do comando aconteça.
Responder4
você pode usar o crontab. execute o comando crontab -e
e 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