
Я создал скрипт bash, который запускает автоматизированное резервное копирование EBS на AWS. Он запускается через cronjob:
0 2 * * * /bin/bash /root/backup_snapshots.sh > backup.log 2>&1
Это работает отлично, но следующее, что я хочу сделать, это добавить код выхода для того, успешно ли запущен скрипт (чтобы я мог настроить проверку Nagios). Есть несколько вещей, которые я собираюсь сделать:
- Создайте файл backup.log в каталоге /var/log/backup/.
- Настройте logrotate на ежедневную ротацию, чтобы упростить обнаружение этой проверки.
Но у меня есть один вопрос: возможно ли заставить cron записать код выхода в файл backup.log, который я создал? Или мне следует использовать такой тип реализации:
Создайте запись в crontab со скриптом, который может запустить реальный скрипт И иметь код завершения, подобный следующему:
#!/bin/bash
/root/backup_snapshots.sh 2> /dev/null
if [ $? -eq 0 ]
then
echo "PASS"
else
echo "FAIL" >&2
fi
Я хочу сделать это как можно проще, так что если cron может это сделать, здорово! Если нет, то следующим лучшим решением будет создать скрипт bash, который выполняет backup_snapshots.sh и запускается через cron?
решение1
#!/bin/bash
exec 1>/var/log/backup/backup_sbapshots.log 2>&1
if /root/backup_snapshots.sh
then
echo "PASS"
else
echo "FAIL"
fi
Создайте скрипт cron, как показано, который поместит статус выполнения cronjob в файл журнала резервного копирования. Обратите внимание, что нигде не упоминается переменная, $?
поскольку if
оператор владеет своей собственной.