Como posso programar uma tarefa do cron executada a cada 10 segundos no linux?

12

Eu sei como fazer cada minuto, mas e a cada 10 segundos?

    
por Alex 10.03.2011 / 03:58

4 respostas

8

Não é possível agendar o trabalho a cada dez segundos, mas suponho que você possa agendar o trabalho para ser executado a cada minuto e dormir em um loop em intervalos de 10 segundos. Isso seria baseado em seu comando ser concluído antes do intervalo de dez segundos expirar ou você obterá sobreposição quando o próximo comando for executado. Isso parece uma solução precária, mas se você puder garantir uma execução muito curta do comando principal do script, isso funcionará.

#!/bin/bash
i=0

while [ $i -lt 6 ]; do
  /run/your/command &
  sleep 10
  i=$(( i + 1 ))
done
    
por 10.03.2011 / 04:04
13

Eu tive uma tarefa semelhante na semana passada. Minhas soluções foram multiplicar as entradas do cron padrão para a frequência desejada. Meu crontab se parece com:

* * * * * /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 10; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 20; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 30; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 40; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 50; /usr/local/bin/php /var/www/myscript.php

Se você quiser verificar os resultados de myscript.php, por exemplo para depuração, basta anexar

&> /tmp/myscipt.log

para cada linha no crontab acima. Então stderr e stdout são redirecionados para o arquivo de log.

    
por 03.04.2014 / 07:49
1

Eu usaria Monit e ajustaria o tempo de ciclo para 10 segundos.

Eu faço isso com determinados scripts que precisam ser executados em um intervalo de 15 segundos.

Veja: Como realizar incremental / backups contínuos do pool do zfs?

    
por 26.10.2017 / 20:28
0

O Cron permite apenas um mínimo de um minuto. Você pode tentar isso -

* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/)
    
por 26.10.2017 / 20:07

Tags