
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 $magicnumber
mais tarde no script e usar qualquer agendamento cron que desejar.