Problema: Executando Tarefas Cron Com Maior Frequência Do Que Uma Vez Por Minuto
Normalmente, as tarefas cron no Linux são executadas em intervalos de um minuto ou mais. Às vezes, você precisa executar tarefas com mais frequência, como a cada 10 segundos. Isso pode ser um problema para tarefas que precisam ser executadas quase instantaneamente.
Usando Múltiplas Entradas Cron com Comandos Sleep
Configurando as Tarefas Cron
Para executar uma tarefa a cada 10 segundos no Linux, você pode usar várias entradas cron com comandos sleep. Este método utiliza seis entradas cron que são executadas a cada minuto, cada uma com uma duração de sleep diferente. Ao espaçar os tempos de execução, você pode obter um intervalo de 10 segundos entre cada execução da tarefa.
O processo envolve:
- Criar seis entradas cron que são executadas a cada minuto
- Adicionar comandos sleep a cada entrada para deslocar o tempo de execução
- Usar o mesmo comando para cada entrada
Aqui está um exemplo dessas entradas cron:
* * * * * /usr/bin/wget http://api.us/application/
* * * * * sleep 10; /usr/bin/wget http://api.us/application/
* * * * * sleep 20; /usr/bin/wget http://api.us/application/
* * * * * sleep 30; /usr/bin/wget http://api.us/application/
* * * * * sleep 40; /usr/bin/wget http://api.us/application/
* * * * * sleep 50; /usr/bin/wget http://api.us/application/
Nesta configuração, a primeira entrada é executada no início de cada minuto. As próximas entradas usam comandos sleep para atrasar sua execução em 10, 20, 30, 40 e 50 segundos. Isso cria um padrão onde o comando é executado a cada 10 segundos ao longo de cada minuto.
Este método ajuda você a contornar o limite de um minuto do cron e executar sua tarefa em intervalos de 10 segundos.
Dica: Registrando a Execução da Tarefa Cron
Para monitorar a execução de suas tarefas cron e verificar se estão sendo executadas nos intervalos corretos, adicione um comando de registro a cada entrada. Por exemplo:
* * * * * /usr/bin/wget http://api.us/application/ && echo "$(date): Tarefa executada" >> /var/log/cron_job.log
* * * * * sleep 10; /usr/bin/wget http://api.us/application/ && echo "$(date): Tarefa executada" >> /var/log/cron_job.log
Isso criará um arquivo de log com carimbos de data/hora para cada execução da tarefa, ajudando você a rastrear e depurar sua configuração cron.