Configure o job para expirar

3

Estou aprendendo Linux no momento e estava fazendo alguns exercícios agendando trabalhos com cron e crontab, mas estou pensando se é possível limitar a quantidade de vezes que o trabalho agendado é executado. Nas man pages, posso ver como programar o job para executar periodicamente, mas não encontrei uma maneira de dar um número específico de vezes para ser executado ou uma data em que ele deveria parar de executar o job. É possível fazer isso?

    
por camria 19.10.2014 / 22:04

1 resposta

0

Exemplo: um job que é executado por hora, até que "seg fev 4 08:30:00 UTC 2019" (timestamp do Unix 1549269000) seja exibido

@hourly [ "$( date +\%s )" -lt 1549269000 ] && /path/to/my-script.sh

O trabalho ainda seria tecnicamente executado , mas não executaria o script após o registro de data e hora especificado.

Da mesma forma, um trabalho que é executado apenas cinco vezes por hora:

@hourly ( f="$HOME/job.count";c=0;[ -f "$f" ] && read c <"$f"; echo "$(( c + 1 ))" >"$f"; [ "$c" -lt 5 ] ) && /path/to/my-script.sh

O trabalho acima, embelezado:

(
    f="$HOME/job.count"
    c=0
    [ -f "$f" ] && read c <"$f"
    echo "$(( c + 1 ))" >"$f"
    [ "$c" -lt 5 ]
) && /path/to/my-script.sh

Isso usa um arquivo de estado, $HOME/job.state , para armazenar o número de vezes que o trabalho foi executado. Se o arquivo existir, o número nele será lido em c e, em seguida, será gravado imediatamente no mesmo arquivo, incrementado. Se o número for menor que cinco, o script é executado.

Mais uma vez, o trabalho seria executado a cada hora, independentemente do conteúdo do arquivo de estado, mas o script só seria executado se o valor no arquivo de estado fosse menor de cinco.

    
por 16.04.2018 / 16:13