Сценарий оболочки не работает с cronjob

Я использую PUTTY для доступа к серверу. Я могу вывести базы данных с помощью следующей команды:

/usr/bin/mysqldump --all-databases | /bin/gzip > Backup_DB/alldatabases_test.sql.gz

Когда я запускаю скрипт из корня, файл выгружается в указанную папку:

root@server1 [~]# sh mybackup.sh
root@server1 [~/Backup_DB]# ls -a
./  ../  alldatabases_test.sql.gz

Однако, когда я настроил это как cronjob, он ничего не выгружал:

*/2 *   *   *   *   sh mybackup.sh

Другие cronjobs работают нормально.

РЕДАКТИРОВАТЬ

Так что запуск сценария не работает, но я ценю вашу помощь. Моя конечная цель - запустить скрипт из того места, где находятся все остальные мои cronjobs, и создать резервную копию в папке, к которой у меня есть доступ по ftp. Вот почему я добавил cronjob:

*/2 *   *   *   *   sh /home/mysite/www/cronjobs/mybackup.sh

с содержанием:

/usr/bin/mysqldump --all-databases | /bin/gzip > /home/mysite/www/cronjobs/alldatabases.sql.gz

Это тоже не работает. Я не смог найти alldatabases.sql.gz в папке /cronjobs. Неправильно ли заданы пути?

1 ответ

Решение

Во-первых, вам нужен полный путь к сценарию, как сказал @attomos. Самый простой способ получить это - запустить cd relative/path/to/script/directory а потом pwd или же echo "$PWD" чтобы получить текущий каталог.

Во-вторых, Backup_DB/alldatabases_test.sql.gz путь внутри скрипта теперь относительно системного корня, поэтому скрипт пытается сохранить его в /Backup_DB/alldatabases_test.sql.gzчто, вероятно, не было предназначено. Вам также необходимо сделать этот путь абсолютным: /root/Backup_DB/alldatabases_test.sql.gz,

Вы должны увидеть некоторые сообщения об ошибках в этом /var/log/cron,

Другие вопросы по тегам