a tarefa cron não espera o final do processo

0

Eu fiz um script que executa comandos e outros scripts. Algumas dessas ações levam tempo. Quando eu executo meu script manualmente a partir do cli, ele funciona bem esperando o final de cada instrução antes de ir para o próximo.

Mas quando coloco o script em um cronjob, mesmo com o comando "wait" após cada instrução, ele não espera o final da instrução antes de iniciar o próximo.

Em resultado, tenho um email vazio enviado.

Alguém sabia o que faz essa diferença no comportamento? Agradecemos antecipadamente por sua ajuda.

EDIT: cron job line

20 17 28 * * bash /home/rancid/running_script/for_crontab.sh

e script

# This scripts create an error file by reading the logs of rancid.
# Once the error file is created, It archives the logs in a tar archive
# and delete the logs files. It then send the error file as attachment
# by e-mail

REPO="/home/rancid/running_script"

# versionning and logs by rancid
echo "Versionning des confs par rancid en cours..."
rancid-run &
wait

# Create error file from what can be found in rancid log files
# (one per rancid group)
echo "Creation du fichier d'erreur en cours.."
bash $REPO/create_rancid_error_from_log.sh &
wait

# Create tar archive with the log files and then delete the logs
bash $REPO/tar_logs.sh &
wait

# Sending email with error file made earlier as attachment.
echo "Preparation du mail en cours..."
bash $REPO/mailmonitoring.sh &
wait

# Backup of rancid finished
echo "sauvegarde hebdomadaire terminee"
    
por Uhciar 19.08.2015 / 11:48

1 resposta

0

Acho que você deve se livrar de & e o wait se tornará obsoleto. Você pode substituí-lo por sleep 2 apenas para garantir que tudo esteja pronto no prazo.

#!/bin/bash
REPO="/home/rancid/running_script"

# versionning by rancid
echo "Versionning des confs par rancid en cours..."
rancid-run &
sleep 10

# Creation du compte-rendu d'erreur
echo "Creation du fichier d'erreur en cours.."
bash $REPO/create_rancid_error_from_log.sh
sleep 2

# Archivage des logs suivi de leur supression
bash $REPO/tar_logs.sh
sleep 2

# Envoie du mail
echo "Preparation du mail en cours..."
bash $REPO/mailmonitoring.sh
sleep 2

echo "sauvegarde hebdomadaire terminee"
    
por 19.08.2015 / 12:23

Tags