необходимо периодически кидать в таблицу данные из файла
команда из консоли отрабатывает как надо
mysql -usapsd -psapsd zakdev < /home/sap/sql/pord_*.sql
а вот когда вставляю ее в crone получаю
/bin/sh: /home/sap/sql/pord_*.sql: No such file or directory
> а вот когда вставляю ее в crone получаю
> /bin/sh: /home/sap/sql/pord_*.sql: No such file or directoryПохоже на косяк в синтаксисе строки для crontab - типа "минуты" = mysql, "часы" = -usapsd и т.д. до "команда" = /home/sap/sql/prod_*.sql.
Покажи строку полностью.
>> а вот когда вставляю ее в crone получаю
>> /bin/sh: /home/sap/sql/pord_*.sql: No such file or directory
> Похоже на косяк в синтаксисе строки для crontab - типа "минуты" =
> mysql, "часы" = -usapsd и т.д. до "команда" = /home/sap/sql/prod_*.sql.
> Покажи строку полностью.0,5,10,15,20,25,30,35,40,45,50,55 * * * * mysql -usapsd -psapsd zakdev < /home/sap/sql/pord_*.sql
>>> а вот когда вставляю ее в crone получаю
>>> /bin/sh: /home/sap/sql/pord_*.sql: No such file or directory
>> Похоже на косяк в синтаксисе строки для crontab - типа "минуты" =
>> mysql, "часы" = -usapsd и т.д. до "команда" = /home/sap/sql/prod_*.sql.
>> Покажи строку полностью.
> 0,5,10,15,20,25,30,35,40,45,50,55 * * * *Вот это можно заменить на:
*/5 * * * *
> необходимо периодически кидать в таблицу данные из файла
> команда из консоли отрабатывает как надо
> mysql -usapsd -psapsd zakdev < /home/sap/sql/pord_*.sql
> а вот когда вставляю ее в crone получаю
> /bin/sh: /home/sap/sql/pord_*.sql: No such file or directoryРекомендую завернуть команду mysql в скрипт.
Собственно скрипт уже тестировать, траблшутить, допиливать, назначать нужные переменные окружения, писать ошибки в лог, и т.д.Рекомендую прописать юзера и пароль для MySQL в ~/.my.cnf хозяина скрипта.
Что касается конкретно той команды которую вы пытаетесь выполнить, имейте в виду что в командах в crontab знаки подстановки просто так не обрабатываются. По крайней мере * и ? воспринимаются букально. Вот если бы ваш файл так и назывался "/home/sap/sql/pord_*.sql", оно бы сработало. Почему так, навскидку не скажу, подозреваю что это сязанно с тем что * интерпретирует сам парсер crontab-а. Указывайте все имена прямо, или заворачивайте свою команду в скрипт.
>[оверквотинг удален]
> Собственно скрипт уже тестировать, траблшутить, допиливать, назначать нужные переменные
> окружения, писать ошибки в лог, и т.д.
> Рекомендую прописать юзера и пароль для MySQL в ~/.my.cnf хозяина скрипта.
> Что касается конкретно той команды которую вы пытаетесь выполнить, имейте в виду
> что в командах в crontab знаки подстановки просто так не обрабатываются.
> По крайней мере * и ? воспринимаются букально. Вот если бы
> ваш файл так и назывался "/home/sap/sql/pord_*.sql", оно бы сработало. Почему так,
> навскидку не скажу, подозреваю что это сязанно с тем что *
> интерпретирует сам парсер crontab-а. Указывайте все имена прямо, или заворачивайте свою
> команду в скрипт.с отдельного скрипта и начал, но результат был тот же, просто решил упростить для понятия ошибки
cd /home/sap/sql/
mysql -usapsd -psapsd zakdev < ./pord_*.sql >> /var/log/import_prog.log
mv pord_*.sql ../old/причем перенос файла отрабатывает корректно
но действительно он как-то не корректно воспринимает * в пути mysql
потому как ели указать конкретный файл pord_2000000505.sql то отрабатываетпароль "спрячу" в my.cnf когда все работать начнет :)
Да, pattern matching не работатет тут, либо, как рекомендовали, оберните в отдельный скрипт, либо используйте результат подстановки, например:mysql -usapsd -psapsd zakdev < $(realpath -ze /home/sap/sql/pord_*.sql /dev/null | cut -d '' -f 1)
> Да, pattern matching не работатет тут, либо, как рекомендовали, оберните в отдельный
> скрипт, либо используйте результат подстановки, например:
> mysql -usapsd -psapsd zakdev < $(realpath -ze /home/sap/sql/pord_*.sql /dev/null |
> cut -d '' -f 1)спасибо с результатом подстановки сработало в кроне