Я сделал скрипт, который выполняет команды и другие скрипты. Некоторые из этих действий требуют времени. Когда я выполняю свой скрипт вручную из cli, он прекрасно работает, ожидая окончания каждой инструкции, прежде чем перейти к следующей.

Но когда я помещаю скрипт в cronjob, даже с командой "wait" после каждой инструкции, он не ждет конца инструкции перед началом следующей.

В результате я получил пустую почту.

Кто-нибудь знал, что делает эту разницу в поведении? Заранее спасибо за помощь.

РЕДАКТИРОВАТЬ: хрон работы

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

и сценарий

# 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"

1 ответ1

0

Я думаю, вы должны просто избавиться от & и wait устареет. Вы можете заменить его на sleep 2 чтобы убедиться, что все на месте вовремя.

#!/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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .