У меня есть сценарий bin/bash, который mysqldumps моей базы данных sql, когда я запускаю его, все идет хорошо с filesize = 3MB, но когда crontab(как sudo) запускает сценарий, тогда размер файла составляет 20B

скрипт

#!/bin/bash
cd /home/blades/backup/databases
DATE=$(date +"%d-%m-%Y_%H:%M:%S")
mysqldump -u username -h localhost database --single-transaction | gzip -9 > database.sql_$DATE.gz

и sudo crontab -e

30 04 * * * /home/blades/backup/backup

Что я делаю неправильно?

3 ответа3

1

Вы должны зарегистрировать свою ошибку, скажем, добавив

2>/tmp/mysqldump.log 

выяснить в чем ошибка.

Скорее всего, ваша среда cron не имеет правильной настройки PATH . Поэтому первое, что вы можете сделать, это добавить полный путь к командам mysqldump и gzip , что, вероятно, решит вашу проблему.

Если нет, просто изучите журнал ошибок.

0

Хорошо, мне удалось решить эту проблему, в файле .my.cnf мне пришлось указать mysqldump и клиента, а не только mysqldump, поэтому файл .my.cnf (после этого chmod до 400)

[client]
user=aaaaaaaaaaaaa
password=xxxxxxxxxxxx

[mysqldump]
user=aaaaaaaaaaaaa
password=xxxxxxxxxxxx

Другое дело, что параметры должны быть в первую очередь, затем localhost и т. д., поэтому скрипт выглядит так

/usr/bin/mysqldump --defaults-file=/home/username/.my.cnf --single-transaction -h localhost database_name | gzip -9 > database_name.sql_$DATE.gz

Вот и все, спасибо за помощь в любом случае

0

Попробуйте добавить полный путь к mysqldump. /usr/bin/mysqldump -u username -h localhost database --single-transaction | gzip -9 > database.sql_$DATE.gz

(/usr/bin/mysqldump является примером. Это может быть в другом месте в вашей системе). Скрипты, запускаемые из crontab, запускаются в другом "месте" и не соответствуют вашему текущему пользовательскому определению $ PATH. Ваш текущий пользователь, скорее всего, имеет путь mysqldump, определенный в его переменной среды $ PATH, поэтому при запуске сценария вручную работает без проблем. То же относится и к gzip .

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