Crontab не запускает команду mysql

Я настроил cronjob с помощью crontab -e следующим образом:

12 22 * * * /usr/bin/mysql >> < FILE PATH >

Это не запускает команду mysql. Он только создает пустой файл. В то время как команда mysqldump запускается через cron. В чем может быть проблема?


person user1180463    schedule 24.08.2012    source источник
comment
Не по теме; принадлежит ошибке сервера или, возможно, привилегированному пользователю   -  person Jim Garrison    schedule 24.08.2012
comment
Я не уверен в этом, Джим. Как cron, так и MySQL являются программными инструментами, обычно используемыми программистами в соответствии с часто задаваемыми вопросами. пользователи базы данных не возятся с заданиями cron, обычно это делают только разработчики.   -  person paxdiablo    schedule 24.08.2012


Ответы (2)


Конечно, mysql — это интерактивный интерфейс в MySQL.

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

Возможно, вы захотите подумать о предоставлении команды для его обработки, например:

12 22 * * * /usr/bin/mysql
                -u me
                -p never_you_mind
                -e "select * from my_table"
                -D my_database
                >>/home/me/output_file

(разделено на несколько строк для удобства чтения, но должно быть на одной строке).

Кроме того, это не слишком безопасно, поскольку ваш пароль может быть виден из ps во время выполнения процесса. Поскольку это всего лишь пример, я не слишком беспокоюсь, но вам следует подумать о сохранении пароля в должным образом защищенном файле my.cnf, если вы пойдете по этому пути.

С точки зрения запуска сценария оболочки из cron, который, в свою очередь, выполняет команды MySQL, это также должно работать. Один из вариантов — здесь-doc:

/usr/bin/mysql -u me -p never_you_mind -D my_database <<EOF
    select * from my_table
    select * from my_other_table where id = 74
EOF
person paxdiablo    schedule 24.08.2012
comment
Так нельзя ли запустить команду mysql через cron? На самом деле, я буду запускать команду mysql в сценарии оболочки, который, в свою очередь, будет запускаться через cron. - person user1180463; 24.08.2012
comment
Нет, это возможно, я обновил ответ, чтобы показать, как (по памяти). Невозможно сделать это интерактивно из cron. - person paxdiablo; 24.08.2012

12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1

Перенаправьте свое сообщение об ошибке в тот же файл, чтобы вы могли его отладить.

Также есть хорошая статья о том, как отлаживать задания cron: Как отладить неисправное задание cron

person Q. Qiao    schedule 17.01.2017