Parar o trabalho Cron para um intervalo de tempo específico

4

Eu tenho um cron job que funciona a cada cinco minutos durante todo o dia.

Eu quero parar este trabalho do cron rodando aos domingos entre as 16h e as 17h - ele deve começar novamente após esse horário.

Como posso escrever isso?

    
por akd 07.07.2011 / 14:14

3 respostas

4

Cole isso na parte superior do seu script de tarefa do cron (modificado conforme necessário) ...

if [[ $(date +%u) -eq 7 && $(date +%H) -eq 16 ]]; then
  echo "I don't run at this time"
  exit 1
fi
echo "Something to do at other times here..."

A primeira ocorrência de "date" retorna o dia da semana (domingo = 7), o segundo retorna a hora (16 = 4:00 - 4,59pm). Se o script descobrir que atualmente é o dia 7 e a hora 16, ele será encerrado.

    
por 07.07.2011 / 14:51
4

E sobre:

*/5 * * * * job.sh > /dev/null

00 16 * * 0 touch /tmp/stopJob.lck
00 17 * * 0 rm -f /tmp/stopJob.lck

Em job.sh , apenas saia se o arquivo existir:

if [ -f /tmp/stopJob.lck ] 
then 
  exit
fi
    
por 07.07.2011 / 14:56
0

Você pode não precisar de muito se o seu cron job executar um script e você puder fazer com que ele verifique a ausência de um processo configurado para ser executado entre 4PM e 5PM aos domingos

Por exemplo, eu uso uma tarefa cron a cada 15 minutos que invoca rsync , mas somente se rsync ainda não estiver em execução .

Ele usa o comando pidof para verificar se um ID de processo específico está em execução:

PID=$(pidof rsync)

if [ -z $PID ]
then 
    rsync -avz ....
fi

Você precisará elaborar os detalhes para sua situação específica. Eu apresento agora como uma ideia para pensar.

    
por 07.07.2011 / 14:43

Tags