Пользовательские ежедневные и еженедельные задания Cron не выполняются [дубликат]

На этот вопрос уже есть ответ здесь:

Я создал скрипт для резервного копирования моих баз данных и моих веб-сайтов. Он работает нормально, если я запускаю его прямо, но он вообще не работает как задание 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/*.*
0
задан 6 June 2017 в 02:42

2 ответа

Не забывайте, что эти сценарии крона выполняются как корень, что означает, что, например, корневой каталог обращается к корневому каталогу корня и так далее.

, Так как Ваш сценарий просит пароль, вероятно, необходимо выполнить его с полномочиями пользователя root, таким образом, Вы не можете только создать обычный .anacron/cron.daily и поместить Ваш сценарий там, необходимо использовать/etc/cron.daily, таким образом, он выполняется с правильными полномочиями.

я думаю, что самое легкое решение состоит в том, чтобы пройти Ваш сценарий и проверить, использует ли это определенные для пользователя переменные как $HOME, в этом случае необходимо заменить их теми для пользователя 'techguyalabama'.

0
ответ дан 6 October 2019 в 01:34

Я просто следовал этому ответу от , Как Установить корневое Задание крона Правильно :

, Если Вы хотите выполнить сценарий как обычный пользователь:

crontab -e

И добавляют строку:

07,37 * * * * /usr/bin/tunlrupdate.sh

, Если Вы хотите выполнить свой сценарий как корень:

sudo crontab -e

И добавляют ту же строку:

07,37 * * * * /usr/bin/tunlrupdate.sh

, Поскольку пользователь и это работали правильно далеко.

0
ответ дан 6 October 2019 в 01:34

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

Похожие вопросы: