Не работает одно задание cron

D
На сайте с 28.06.2008
Offline
1101
670

Перенес проекты на новый ВПС, и задания крона тоже перенес, их там много, все работают, кроме задания бекапа баз.

в кроне оно прописано так

50 5 * * * /root/mysql-dump.sh > /dev/null 2>&1

в сислоге запись такая

Mar 19 05:50:02 serv CRON[17216]: (root) CMD (/root/mysql-dump.sh > /dev/null 2>&1)

Бекапы сегодня (и вчера не сделалились)

но если зайти по ssh и ручками запустить

bash /root/mysql-dump.sh

все отработает нормально.

Что не так?

[umka]
На сайте с 25.05.2008
Offline
456
#1

Раз в логе запись есть, значит, команда выполняется.

Если результат выполнения скрипта не соответствует ожидаемому, это косяк скрипта.

В 99% случаев проблемы с путями.

Сделайте вывод в файл результатов и посмотрите, что там получается

/root/mysql-dump.sh > /root/mysql-dump.log 2>&1

Лог в помощь!
D
На сайте с 28.06.2008
Offline
1101
#2

[umka], в логе написало

/bin/sh: 1: /root/mysql-dump.sh: Permission denied

права на файл mysql-dump.sh - 644 root root

DV
На сайте с 01.05.2010
Offline
644
#3

6 - rw

4 - r

надо 755

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
[umka]
На сайте с 25.05.2008
Offline
456
#4

Ну тогда на файл нужно или права дать на выполнение (например, 0755) или в задании cron вызывать его тем же способом, как вы это делаете через консоль: /путь/к/bash /root/mysql-dump.sh

D
На сайте с 28.06.2008
Offline
1101
#5

Теперь новая проблемка в этом же скрипте. Бекап делается но не отправляется на Яндекс диск через курл.

В логе пишет это

/root/mysql-dump.sh: line 10: syntax error near unexpected token `done'
/root/mysql-dump.sh: line 10: `done;'

Сам скрипт

#Переменные Базы данных
DBHOST="localhost" #Адрес MySQL сервера
DBUSER="root" #Имя пользователя базы данных
DBPASS="PASSWORD" #Пароль пользователя базы данных
DBNAME="NAME" #Имя базы данных
DBARC=$DBNAME.sql.gz #Имя архива базы данных
#
#Переменные WEBDAV
WEBDAVURL="https://webdav.yandex.ru/backup/" #Адрес Яндекс.Диск. Папка должна существовать!
WEBDAVUSER="LOGIN@yandex.ru" #Имя пользователя от Яндекс.Диска (Яндекс.Почты)
WEBDAVPASS="PASSWORD" #Пароль от Яндекс.Диска
#
# Задаем формат даты
TIME="v7"=$(date '+%F(%H:%M)')""

#FILES=/tmp/www.$TIME.tar.gz
MYSQL=/root/backup/mysql.$TIME.sql.gz
#
# Создаем архив базы MySQL
mysqldump -h$DBHOST -u$DBUSER -p$DBPASS $DBNAME | gzip > $MYSQL
#
#Отправляем результат в Яндекс.Диск
curl --user $WEBDAVUSER:$WEBDAVPASS -T $MYSQL $WEBDAVURL

10 строка у меня эта

DBARC=$DBNAME.sql.gz #Имя архива базы данных

Как заставить работать курл?

На прошлом впс все работало

S
На сайте с 30.09.2016
Offline
469
#6

А лично мне непонятна ситуация с кавычками в этой строчке

TIME="v7"=$(date '+%F(%H:%M)')""
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
D
На сайте с 28.06.2008
Offline
1101
#7

Кавычки отрабаотывают нормально, бекап базы создается согласно заданному имени - тут все ок. Единственное что не работает это отправка на Яндекс диск

D
На сайте с 28.06.2008
Offline
1101
#8

Хоть пхп инфо и показывало что курл есть, но проблему решило банальное

sudo apt-get install curl

установило какой-то 1 пакет и все стало ок

kxk
На сайте с 30.01.2005
Offline
970
kxk
#9

Dram, Как вы любите велосипеды с квадратными колёсами, для облак давно есть Rclone

Ваш DEVOPS

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий