сценарий mysqldump не работает в кроне

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

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# you must pass arguments to this script
if [ $# -eq 0 ]
        then
                echo "No arguments supplied"
                exit 1
fi

# if a path is supplied, perform the mysqldump to that directory
today=`date +%m-%d-%Y`
mysqldump --defaults-file=/home/<user>/.my.cnf --databases 360_projects --single-transaction --add-drop-database --triggers --routines -u BACKUPUSER > $1pmbackup${today}.sql

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

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

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Backup of MySQL Database every 4th Hour, Locally, Remotely
6 11 * * * /bin/bash /home/<user>/Scripts/sql-backup.sh /media/mysqlBackup-Daily/

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

Вывод моего/var/log/cron в течение того определенного времени, когда я пытался протестировать его:

Aug 21 14:06:01 www5 crond[1305]: (<user>) RELOAD (/var/spool/cron/<user>)

Править: Возможно, лучший вопрос в настоящее время состоит просто в том, как получить больше подробного вывода от задания крона. Прямо сейчас все, что я получаю, является строкой, говоря мне, она перезагрузила (см. выше).

РЕДАКТИРОВАНИЕ 8-27-18: Я заметил, что предложение использовало регистратор для получения большего подробного вывода, но это, кажется, не работает. Моя ошибка, теперь измененная на:

Aug 27 13:55:01 www5 crond[1305]: (php) ERROR (getpwnam() failed)

От команды:

*/5 10 * * * /bin/bash /home/<user>/Scripts/sql-backup.sh /media/vantecBackup1/mysqlBackup-Daily/ 2>&1 | /usr/bin/logger -t sql_daily_backup

Что Вы делаете из этой ошибки? Это не имеет большого смысла мне, так как сценарий не использует php.Спасибо.

0
задан 27 August 2018 в 11:05

3 ответа

Огромный благодаря всем, кто помог на этом, мне потребовалась большая отладка для фиксации этого. Выпуск 1): В какой-то момент видя общий совет здесь я изменил свой сценарий для чтения

mysqldump --databases 360_projects --single-transaction --add-drop-database --triggers --routines -u$user -p$password > $1pmbackup${today}.sql 2>&1 >> /var/log/cron

или что-то вроде этого, я удалил его, как только я понял идиотизм. Что происходило было то, что я получал создание файла, но на уровне 0 байтов. Удаление этого зафиксировало это. Однако после разрешения всего Вы все упомянули, что у меня была эта ошибка в/var/log/cron:

Aug 28 10:27:50 www5 crontab[12101]: PAM pam_end: NULL pam handle passed

Это приводит меня видеть, что это была ошибка в cronie в CentOS (я предполагаю, что должен был упомянуть, что этот askUbuntu просто более часто посещается/дружественным, чем другие Сайты QA Linux). Так обновленный, что и это хорошо работает теперь. Вот мои заключительные сценарии для ссылки.

#!/bin/bash

# you must pass arguments to this script
if [ $# -eq 0 ]
        then
                echo "No arguments supplied"
                exit 1
fi

# if a path is supplied, perform the mysqldump to that directory
today=`date +%m-%d-%Y`
mysqldump --defaults-file=/home/achamberlain/.my.cnf --databases 360_projects --single-transaction --add-drop-database --triggers --routines -u BACKUPUSER > $1pmbackup${today}.sql

И мой crontab похож на это:

# Backup of MySQL Database every 4th Hour, Locally, Remotely
5 8-20/4 * * * /home/<user>/Scripts/sql-backup.sh /media/vantecBackup1/mysqlBackup-Daily/

Править: Мое решение первоначально использовало все переменные ПУТИ, которые Вы обеспечили как ответы, но оно работает без него, таким образом, это, возможно, просто была ошибка в cronie.

0
ответ дан 28 October 2019 в 02:44

В файле script вы должны добавить опцию passs( -p PASSWORD) в команду mysqldump, потому что при запуске скрипта вы можете ввести пароль, чтобы скрипт не работал. Вы заново добавляете команду в скрипт с опцией -p.

mysqldump --defaults-file=/home/<user>/.my.cnf --databases 360_projects --single-transaction --add-drop-database --triggers --routines -u BACKUPUSER -p PASSWORD > $1pmbackup${today}.sql

Я думаю, что скрипт и cron работают автоматически.

0
ответ дан 28 October 2019 в 02:44

Используйте регистратор для вывода результата сценария крона. См. https://serverfault.com/a/434902/470077

Это даст Вам некоторый ключ к разгадке относительно того, что необходимо на самом деле делать. Иначе мы просто высказываем предположения относительно что не так.

0
ответ дан 28 October 2019 в 02:44

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

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