2017-02-23 40 views
1

Я создаю резервный скрипт для запуска на Ubuntu.Crontab запускает bash другим способом

backup-all.sh файл:

echo "bootstrap" 
/home2/backup/bootstrap/backup.sh 
BOOTSTRAP_STATUS=$([ "$?" == 0 ] && echo "OK" || echo "** FAIL **") 

echo "sv2" 
/home2/backup/sv2/backup.sh 
SV2_STATUS=$([ "$?" == 0 ] && echo "OK" || echo "** FAIL **") 

if [ "$BOOTSTRAP_STATUS" == "OK" ] && [ "$SV2_STATUS" == "OK" ] ; then 
TITULO="Backup OK" 
else 
TITULO="Backup !FAILED!" 
fi 

(
     echo "Backup status" 
     echo "-------------" 
     echo "BOOTSTRAP_STATUS = $BOOTSTRAP_STATUS" 
     echo "SV2_STATUS = $SV2_STATUS" 
     echo "-------------" 
) | mail -s "${TITULO}" "[email protected]" 

В backup.sh файлов заканчивается:

exit 0 # for success; OR: 
exit 1 # for errors + send mail with log file 

* backup.sh файлы содержат Rsync и MySQL Backup.

Когда скрипт вернет 1 (ошибка), он также отправит мне электронное письмо, в котором сообщается, что что-то не так, и все шаги записываются в файл журнала.

** У меня есть электронные письма. Один для обзора и один для каждого «сервера», который получает ошибки.

Итак, если я запускаю вручную,

./backup-all.sh 

Все хорошо. Я получаю только одно письмо с заголовком «Резервное копирование ОК».

Если я жду cron для выполнения задания, я получаю только одно письмо с заголовком «Резервное копирование! FAILED!», Хотя я не получал ошибок, и файлы журнала в порядке.

crontab -e 
0 0 * * * /home2/backup/backup-all.sh 

Итак, что задание cron выполняет с условием/выходом значений моих скриптов?

+2

Если вы не можете явно запросить bash (с '#!/Bin/bash'), вероятно, что' ["$?" == 0] 'является синтаксической ошибкой. –

+2

Не синтаксическая ошибка, а только недопустимый аргумент, передаваемый ''. –

ответ

2

отлаживать, лог на стандартный вывод и ошибки в лог-файл:

0 0 * * * /home2/backup/backup-all.sh > /tmp/debug.log 2>&1 

Несколько возможностей, cron не имеет надлежащего окр по умолчанию или дизайн:

  1. rsync и mysqldump не в хрон env
  2. добавить #!/usr/bin/bash к вашему шаблону bash
+0

Вариант 2 решён. Единственное, что я должен изменить на «#!/Bin/bash». благодаря – lcssanches

Смежные вопросы