Agendando tarefas no cron com horário aleatório
Dica publicada em Linux / Comandos
Agendando tarefas no cron com horário aleatório
Se você deseja executar uma tarefa no cron em um horário aleatório dentro de um intervalo específico, siga os passos abaixo:
Por exemplo, se você deseja executar um comando entre 8:30 e 9:30, crie um script chamado "random_command.sh":
Em seguida, torne o script executável:
chmod +x /path/to/random_command.sh
Agora, atualize sua entrada no cron. Por exemplo, todos os dias às 8:30 eu envio uma mensagem de bom dia para minha namorada via WhatsApp pegando uma frase aleatório gerada por inteligência artificial. Mas como a mensagem vinha sempre no mesmo horário, ela começou a desconfiar:
Então, eu atualizei a entrada no cron para:
Com esta configuração, o script "random_command.sh" será executado às 8:30 todos os dias, e o comando original será executado após um atraso aleatório de 0 a 3600 segundos (0 a 1 hora), ou seja, em algum momento entre 8:30 e 9:30.
Pronto! Agora você tem uma tarefa no cron que será executada em um horário aleatório dentro do intervalo especificado.
Também é possível adaptar o random_command.sh para gerar um delay de acordo com um valor informado por parâmetro ao invés de 1 hora fixo. Altere o código do script para o a seguir:
Agora basta informar o valor em minutos como parâmetro ao script:
No exemplo acima o comando será executado em algum momento entre 8:30 e 9:00 (30 minutos).
Até a próxima!
- Crie um script para executar antes do comando desejado e inclua um atraso aleatório antes de sua execução.
- Configure o cron para executar esse script no início do intervalo desejado.
Por exemplo, se você deseja executar um comando entre 8:30 e 9:30, crie um script chamado "random_command.sh":
#!/bin/bash # Gere um atraso aleatório entre 0 e 3600 segundos (1 hora) DELAY=$((RANDOM % 3600)) # Aguarde o tempo gerado aleatoriamente antes de executar o comando sleep $DELAY
Em seguida, torne o script executável:
chmod +x /path/to/random_command.sh
Agora, atualize sua entrada no cron. Por exemplo, todos os dias às 8:30 eu envio uma mensagem de bom dia para minha namorada via WhatsApp pegando uma frase aleatório gerada por inteligência artificial. Mas como a mensagem vinha sempre no mesmo horário, ela começou a desconfiar:
30 8 * * * /home/fabio/bin/adb-reload s22 && FRASE=$(/home/fabio/bin/bomdia 1) && /home/fabio/bin/zapear Namorada ${FRASE}
Então, eu atualizei a entrada no cron para:
30 8 * * * /home/fabio/bin/random_command.sh && /home/fabio/bin/adb-reload s22 && FRASE=$(/home/fabio/bin/bomdia 1) && /home/fabio/bin/zapear Namorada ${FRASE}
Com esta configuração, o script "random_command.sh" será executado às 8:30 todos os dias, e o comando original será executado após um atraso aleatório de 0 a 3600 segundos (0 a 1 hora), ou seja, em algum momento entre 8:30 e 9:30.
Pronto! Agora você tem uma tarefa no cron que será executada em um horário aleatório dentro do intervalo especificado.
Também é possível adaptar o random_command.sh para gerar um delay de acordo com um valor informado por parâmetro ao invés de 1 hora fixo. Altere o código do script para o a seguir:
#!/bin/bash
MINUTES=$1
# Se minutos não foi informado, use 60 minutos como padrão
if [ -z "$MINUTES" ]; then
MINUTES=60
fi
# Gere um atraso aleatório entre 0 e o valor em minutos
# informado por parâmetro
DELAY=$((RANDOM % ($MINUTES * 60)))
# Aguarde o tempo gerado aleatoriamente antes de executar o comando
sleep $DELAY
Agora basta informar o valor em minutos como parâmetro ao script:
30 8 * * * /home/fabio/bin/random_command.sh 30 && /home/fabio/bin/adb-reload s22 && FRASE=$(/home/fabio/bin/bomdia 1) && /home/fabio/bin/zapear Namorada ${FRASE}
No exemplo acima o comando será executado em algum momento entre 8:30 e 9:00 (30 minutos).
Até a próxima!
boa dica.
___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10