У меня проблема. У меня запланировано выполнение сценария, но когда приходит время, ничего не происходит.
#!/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
Есть идеи, почему это происходит?
Мое первое предположение состоит в том, что команды mysqldump нет в пути, когда скрипт запускается cron. Пытаться:
which mysqldump
Возьмите вывод этого и замените весь путь именем команды. Например: /usr/bin/mysqldump
вместо того mysqldump
Или добавьте что-нибудь в локальную переменную PATH. Например: PATH=$PATH:/usr/bin
Это также решит проблемы, если tar
, chown
, или другие команды не находятся в пути по умолчанию.