Cronjob: Iterar arquivos

0

Eu quero fazer uma iteração através de uma lista de scripts bash com um cron-job. Ou seja a cada duas horas eu quero começar outro script bash. Minha ideia era definir uma nova variável de ambiente, toda vez que o script cronjob lê essa variável de ambiente e chama o script correspondente e incrementa a variável de ambiente.

Eu tentei isso e funciona se eu chamar test.sh do terminal.

# test.sh
JOB_COUNTER=$((JOB_COUNTER + 1))
echo $JOB_COUNTER
export JOB_COUNTER=$JOB_COUNTER

Se eu colocar a chamada de dentro de crontab , $JOB_COUNTER parece não ter sido incrementado (eu verifico com echo $JOB_COUNTER )

Contexto: Eu quero adicionar 50 novos trabalhos ao nosso cluster a cada duas horas, porque se eu enviar todos os trabalhos juntos, o agendador iniciará muitos trabalhos em paralelo e a maioria esgotará o tempo porque a E / S é muito lenta. Se um cronjob não é o que se usaria, estou aberto a outras ideias.

    
por P.R. 08.04.2015 / 23:12

1 resposta

0

cada test.sh chamado pelo cron é um novo processo, então a variável environnement é descartada.

Tente

# test.sh
JOB_COUNTER=$(< $HOME/jobcounter.txt )
JOB_COUNTER=$((JOB_COUNTER + 1))
echo $JOB_COUNTER > $HOME/jobcounter.txt
echo $JOB_COUNTER
# JOB_COUNTER can be used here 

Cuidado que você não pode usar o JOB_COUNTER chamando o shell a menos que o test.sh seja originado ( . ./test.sh )

você terá que inicializar e redefinir $HOME/jobcounter.txt

    
por 09.04.2015 / 12:15