Como faço um cron job com argumento cíclico?

Como faço um cron job com argumento cíclico?

Quero executar um script bash, digamos, a cada 5 minutos, com um argumento predefinido de acordo com um ciclo.

Por exemplo, quero usar como argumento 1, 2, 5, 10, 15, 50, 15, 10, 5, 2 e então iniciar o ciclo novamente.

Idealmente, os argumentos são armazenados em um arquivo ou script onde posso editá-los facilmente, adicionar ou remover alguns, etc.

Como faço isso ?


Eu poderia fazer isso com um único script, um array e um, while [[ true ]]mas gostaria de saber se posso fazer isso com o cron.

Responder1

Provavelmente, a maneira mais eficaz e mais simples de fazer isso seria fazer com que o script monitorasse o ciclo do número mágico em vez de usar argumentos. Algo assim:

#!/bin/bash
sequence=(1 2 5 10 15 50 15 10 5 2)
if [[ -r /var/tmp/myjob.seq ]]; then
   seq="$(cat /var/tmp/myjob.seq)"
   if [[ $seq -lt $((${#sequence[@]}-1)) ]]; then
       nextseq=$(($seq+1))
   else
       nextseq=0
   fi
   echo $nextseq > /var/tmp/myjob.seq
else
   seq=0
   echo 1 > /var/tmp/myjob.seq
fi
magicnumber=${sequence[$seq]}

Você pode então consultar $magicnumbermais tarde no script e usar qualquer agendamento cron que desejar.

informação relacionada