URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97573
[ Назад ]

Исходное сообщение
"непонятки с выполнение команды из crone"

Отправлено Doc , 17-Апр-20 20:17 
необходимо периодически кидать в таблицу данные из файла
команда из консоли отрабатывает как надо
mysql -usapsd -psapsd zakdev < /home/sap/sql/pord_*.sql
а вот когда вставляю ее в crone получаю
/bin/sh: /home/sap/sql/pord_*.sql: No such file or directory


Содержание

Сообщения в этом обсуждении
"непонятки с выполнение команды из crone"
Отправлено ACCA , 17-Апр-20 23:31 
> а вот когда вставляю ее в crone получаю
> /bin/sh: /home/sap/sql/pord_*.sql: No such file or directory

Похоже на косяк в синтаксисе строки для crontab - типа "минуты" = mysql, "часы" = -usapsd и т.д. до "команда" = /home/sap/sql/prod_*.sql.

Покажи строку полностью.


"непонятки с выполнение команды из crone"
Отправлено Doc , 18-Апр-20 10:46 
>> а вот когда вставляю ее в 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"
Отправлено MoHaX , 22-Апр-20 08:16 
>>> а вот когда вставляю ее в 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 * * * *


"непонятки с выполнение команды из crone"
Отправлено Licha Morada , 18-Апр-20 00:25 
> необходимо периодически кидать в таблицу данные из файла
> команда из консоли отрабатывает как надо
> 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-а. Указывайте все имена прямо, или заворачивайте свою команду в скрипт.


"непонятки с выполнение команды из crone"
Отправлено Doc , 18-Апр-20 10:48 
>[оверквотинг удален]
> Собственно скрипт уже тестировать, траблшутить, допиливать, назначать нужные переменные
> окружения, писать ошибки в лог, и т.д.
> Рекомендую прописать юзера и пароль для 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 когда все работать начнет :)


"непонятки с выполнение команды из crone"
Отправлено romanegunkov , 18-Апр-20 10:07 
Да, pattern matching не работатет тут, либо, как рекомендовали, оберните в отдельный скрипт, либо используйте результат подстановки, например:

mysql -usapsd -psapsd zakdev < $(realpath -ze /home/sap/sql/pord_*.sql /dev/null | cut -d '' -f 1)


"непонятки с выполнение команды из crone"
Отправлено Doc , 18-Апр-20 11:34 
> Да, pattern matching не работатет тут, либо, как рекомендовали, оберните в отдельный
> скрипт, либо используйте результат подстановки, например:
> mysql -usapsd -psapsd zakdev < $(realpath -ze /home/sap/sql/pord_*.sql /dev/null |
> cut -d '' -f 1)

спасибо с результатом подстановки сработало в кроне