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

3

Eu quero executar um script bash dizendo a cada 5 minutos, com um argumento pré-definido de acordo com um ciclo.

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

O ideal é que os argumentos sejam armazenados em um arquivo ou no script, onde eu possa facilmente editá-los, adicionar ou remover alguns, etc.

Como faço isso?

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

    
por Teleporting Goat 16.12.2016 / 18:01

1 resposta

3
Provavelmente, o mais eficaz e uma das maneiras mais simples de conseguir isso seria ter o identificador de script rastreando o número mágico em vez de usar argumentos. Algo parecido com isto:

#!/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 se referir a $magicnumber mais tarde no script e usar o cronograma que quiser.

    
por 16.12.2016 / 18:27