Я проходил все различные вопросы о том, почему определенный сценарий работает в кроне, и ничто не помогло мне к настоящему времени. Таким образом, я просто пытаюсь запустить 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.Спасибо.
Огромный благодаря всем, кто помог на этом, мне потребовалась большая отладка для фиксации этого. Выпуск 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.
В файле 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 работают автоматически.
Используйте регистратор для вывода результата сценария крона. См. https://serverfault.com/a/434902/470077
Это даст Вам некоторый ключ к разгадке относительно того, что необходимо на самом деле делать. Иначе мы просто высказываем предположения относительно что не так.