На этот вопрос уже есть ответ здесь:
Я создал скрипт для резервного копирования моих баз данных и моих веб-сайтов. Он работает нормально, если я запускаю его прямо, но он вообще не работает как задание cron.
Я создал символическую ссылку на сценарий:
lrwxrwxrwx 1 root root 44 Feb 11 14:58 backupsql -> /home/techguyalabama/dropboxbackup/backupsql
Если я запустил резервные копии
из каталога /etc/cron.daily
, он запросит мой пароль.Я не уверен, что проблема в этом. Если это так, как мне этого избежать?
Я действительно изменил время выполнения заданий cron. Может быть, это тоже «нет-нет»?
Это в моем crontab:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
05 5 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
30 5 * * 6 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
00 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Я перезапустил сервер, чтобы посмотреть, изменилось ли это, но это не так.
Я также проверил системный журнал из этого сообщения Где находится журнал cron / crontab? , чтобы узнать, есть ли там что-нибудь о резервных копиях ql:
tail -f /var/log/syslog | grep backupsql
Я не получил результатов.
Кто-нибудь видит, что я делаю неправильно?
РЕДАКТИРОВАТЬ №1
Это мой сценарий резервного копирования ql:
#!/bin/bash
DB_BACKUP="/home/techguyalabama/dropboxbackup/sqlbackup"
DB_USER="root"
DB_PASSWD="wouldntyouliketoknow"
HN=`hostname | awk -F. '{print $1}'`
# Create the backup directory
mkdir -p $DB_BACKUP
# Backup each database on the system
for db in $(mysql --user=$DB_USER --password=$DB_PASSWD -e 'show databases' -s --skip-column-names|grep -viE '(staging|performance_schema|information_schema)');
do mysqldump --user=$DB_USER --password=$DB_PASSWD --events --opt --single-transaction $db | gzip > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).gz";
done
/home/techguyalabama/dropboxbackup/dropbox_uploader.sh upload /home/techguyalabama/dropboxbackup/sqlbackup/*.* /sqlbackup/
rm -f /home/techguyalabama/dropboxbackup/sqlbackup/*.*
Не забывайте, что эти сценарии крона выполняются как корень, что означает, что, например, корневой каталог обращается к корневому каталогу корня и так далее.
, Так как Ваш сценарий просит пароль, вероятно, необходимо выполнить его с полномочиями пользователя root, таким образом, Вы не можете только создать обычный .anacron/cron.daily и поместить Ваш сценарий там, необходимо использовать/etc/cron.daily, таким образом, он выполняется с правильными полномочиями.
я думаю, что самое легкое решение состоит в том, чтобы пройти Ваш сценарий и проверить, использует ли это определенные для пользователя переменные как $HOME, в этом случае необходимо заменить их теми для пользователя 'techguyalabama'.
Я просто следовал этому ответу от , Как Установить корневое Задание крона Правильно :
, Если Вы хотите выполнить сценарий как обычный пользователь:
crontab -e
И добавляют строку:
07,37 * * * * /usr/bin/tunlrupdate.sh
, Если Вы хотите выполнить свой сценарий как корень:
sudo crontab -e
И добавляют ту же строку:
07,37 * * * * /usr/bin/tunlrupdate.sh
, Поскольку пользователь и это работали правильно далеко.