Сценарий оболочки не работает с 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
,