The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"непонятки с выполнение команды из crone"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"непонятки с выполнение команды из crone"  +/
Сообщение от Docemail (ok), 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от ACCA (ok), 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.

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4

2. Сообщение от Licha Morada (ok), 18-Апр-20, 00:25   +1 +/
> необходимо периодически кидать в таблицу данные из файла
> команда из консоли отрабатывает как надо
> 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-а. Указывайте все имена прямо, или заворачивайте свою команду в скрипт.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

3. Сообщение от romanegunkov (ok), 18-Апр-20, 10:07   +1 +/
Да, pattern matching не работатет тут, либо, как рекомендовали, оберните в отдельный скрипт, либо используйте результат подстановки, например:

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

4. Сообщение от Doc (ok), 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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #8

5. Сообщение от Doc (ok), 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 когда все работать начнет :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

8. Сообщение от MoHaX (ok), 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 * * * *

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру