Скрипт не выполняет то, что должен при запуске с помощью cron

Скрипт не выполняет то, что должен при запуске с помощью cron

У меня возникла проблема. У меня запланировано выполнение скрипта, но когда приходит время, ничего не происходит.

 #!/bin/sh
 TIME=`date +"%d-%m-%Y"`
 cd /var/www/flyer/data/www/
 mysqldump -u root -ppasswd --databases db_name --create-options --default- character-set=utf8 --result-file=dump.sql
 FILENAME="backup_$TIME.tar.gz"
 tar -cpzf ../backups/$FILENAME somefolder dump.sql  
 rm dump.sql
 chown flyer:flyer ../backups/$FILENAME
 chmod 666 ../backups/$FILENAME

Когда я запускаю скрипт напрямую из ssh как /root/backup.sh, все работает как надо. Но когда он запускается cron, ничего не происходит. grep CRON /var/log/syslogпоказывает, что он был выполнен (19 дек 01:21:01 vps-8463 /USR/SBIN/CRON[1299]: (root) CMD (sh /root/backup.sh >/dev/null 2>&1) ), но архив не создается. Задача cron : 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
Есть идеи, почему это происходит?

решение1

Моя первая догадка — команда mysqldump отсутствует в пути, когда скрипт запускается cron. Попробуйте:

which mysqldump

Возьмите вывод этого и замените весь путь на имя команды. Например: /usr/bin/mysqldumpвместоmysqldump

Или добавьте что-нибудь в локальную переменную PATH. Например: PATH=$PATH:/usr/bin

Это также решит проблемы, если tar, chownили другие команды отсутствуют в пути по умолчанию.

Связанный контент