У меня есть следующий файл в /etc/cron.hourly
. Цель этого сценария — создавать резервную копию дампа docker-MongoDB каждый час, а затем использовать rclone для синхронизации этого файла дампа с содержимым в папке Google Диска.
Название скрипта:
rclone_Linux_MongoDB_Sync
Скрипт:
#!/бин/ш
/usr/bin/docker exec -it mongodb mkdir /data/dump
/usr/bin/docker exec -it mongodb mongodump --db myDB -u theUser -p thePassword --gzip --out /data/dump/
# Файл конфигурации RClone
RCLONE_CONFIG=/home/ubuntu/.config/rclone/rclone.conf
экспортировать RCLONE_CONFIG
#if [[ "`pidof -x $(basename $0) -o %PPID`" ]]; затем выйти; фи
/usr/bin/rclone sync /data/dump/myDB/MongoDB_Backup:MongoDB_Current
Я сделал:
sudo chmod +x /etc/cron.hourly/rclone_Linux_MongoDB_Sync
sudo chmod 777 /etc/cron.hourly/rclone_Linux_MongoDB_Sync
Обратите внимание, что у меня нет .ш
расширение для скрипта.Раньше это была моя проблема. Теперь, когда я запускаю следующее, мой скрипт отображается.
части запуска --test /etc/cron.hourly
Мой скрипт также работает правильно, когда я делаю:
./rclone_Linux_MongoDB_Sync
Он также запускается, когда я делаю:
части запуска /etc/cron.hourly
Я проверил /etc/crontab с помощью:
кошка /etc/crontab
Часть результата заключается в следующем. В моем понимании, это правильно.
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 корневой тест -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * корневой тест -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Я оценил журналы для cron следующим образом:
grep CRON /var/log/syslog
Для ежедневного, еженедельного и ежемесячного, я полагаю, раньше они не работали из-за того, что анакрон не был установлен. Я установил анакрон с помощью:
sudo apt-get установить анакрон
cron.hourly запускается на 17-й минуте часа, как указано /и т.д./кронтаб
. В соответствии с этим я вижу следующее повторяющееся каждый раз с отметкой времени 17.
19 июля 17:17:01 vps-fac5a33c CRON[1039453]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
19 июля, 17:17:09 vps-fac5a33c CRON[1039452]: (root) MAIL (отправил 104 байта вывода, но получил статус 0x004b от MTA#012)
19 июля 18:17:01 vps-fac5a33c CRON[1045250]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
19 июля, 18:17:18 vps-fac5a33c CRON[1045249]: (root) MAIL (отправил 104 байта вывода, но получил статус 0x004b от MTA#012)
19 июля 19:17:01 vps-fac5a33c CRON[1051174]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
19 июля, 19:17:21 vps-fac5a33c CRON[1051173]: (root) MAIL (отправил 104 байта вывода, но получил статус 0x004b от MTA#012)
Возможно, есть некоторые вещи, которые я сделал, о которых я забыл и не перечислил здесь.Тем не менее, я не понимаю, почему это не работает. Я просмотрел много разных сообщений на форуме, попробовал их процесс, но у меня не работает.
Почему мой скрипт не запускается каждый час, когда он помещен в /etc/cron.hourly
?
Он не работает сам по себе. Он должен запускаться каждый час.
В качестве дополнительного примечания, мой скрипт ранее имел:
#!/бин/баш
Однако, основываясь на некоторых сообщениях, я изменил его на:
#!/бин/ш
Когда я бегу шеллчек
на моем скрипте ничего не отображается, что указывает на то, что все в порядке в соответствии с шеллчек
и синтаксически правильно:
проверка оболочки rclone_Linux_MongoDB_Sync
Добавлено следующее в начало скрипта после #!/бин/ш
. Это нужно для того, чтобы увидеть, какие ошибки возникают в скрипте во время выполнения.
exec 1>>/tmp/rclone_Linux_MongoDB_Sync.log 2>&1
Я изменил crontab для .hourly на недавнее время, чтобы не ждать 17-минутной отметки для его запуска. Из-за вышеуказанного дополнения к моему файлу скрипта был создан следующий файл:
/tmp/rclone_Linux_MongoDB_Sync.log
После запуска:
кошка /tmp/rclone_Linux_MongoDB_Sync.log
Отобразилось следующее.
устройство ввода не является TTY
устройство ввода не является TTY
Всем спасибо!