cron log mostra o cron job antigo sendo executado?

0

Estou executando um script de teste em que, em um loop de 800, dois scripts crontab criam um novo crontab com duração de 5 segundos.

Por exemplo.

while [ "$counter" -lt 800 ]; do
    crontab -r
    create_crontab_1.sh >> cr_log.log
    sleep 5;
    create_crontab_2.sh>> cr_log.log
    (( counter++ ))
done

Agora

create_crontab_1.sh- >
CRONLINE="* / 2 * * * * /scratch/test1.sh > / dev / null 2 > & 1"
(crontab -l 2 > / dev / null; echo "$ {CRONLINE}") | crontab -

create_crontab_2.sh- >
    crontab cron_file.txt

cron_file.txt - >
    * * * * * dormir 2; /scratch/test3.sh > / dev / null 2 > & 1     * * * * * dormir 3; /scratch/test4.sh > / dev / null 2 > & 1

/ var / log / cron log:

crond [25583]: (user_name) RELOAD (/ var / spool / cron /)
 CROND [29339]: (raiz) CMD (dormir 3; /abc/test3.sh > / dev / null 2 > & 1)
 CROND [29340]: (raiz) CMD (sleep 2; /abc/test4.sh > / dev / null 2 > & 1)
 crontab [29345]: (user_name) LIST ()
 CROND [29353]: (user_name) CMD (/abc/test1.sh > / dev / null 2 > & 1)
 crontab [29365]: (user_name) REPLACE ()

Mesmo quando o crontab com test1.sh é sobrescrito em 5 segundos, por que o test1.sh vem no log do cron e pode ser visto a cada 2 minutos (como está programado para ser executado a cada 2 minutos)? Também tem algo a ver com o clock da CPU?

    
por Soumali Chatterjee 22.03.2017 / 11:06

1 resposta

1

Se olharmos para os comandos dentro do seu loop e os reordenarmos um pouco, a parte de repetição é esta:

while ... do
    create_crontab_2.sh >> cr_log.log
    (( counter++ ))
    crontab -r
    create_crontab_1.sh >> cr_log.log
    sleep 5;
done  

O que create_crontab_2.sh faz para editar o crontab é desfeito pelo seguinte crontab -r . Apenas o que está definido no crontab por create_crontab_1.sh está lá durante o sono. Como a mudança do crontab provavelmente será rápida, não é provável que cron consiga ver as regras definidas por create_crontab_2.sh em grande parte.

    
por 22.03.2017 / 11:41

Tags