powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вызов функции psql в CRON
21 сообщений из 21, страница 1 из 1
Вызов функции psql в CRON
    #39626072
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знающий народ - здравствуйте!
Подскажите пожалуйста в чём беда и как вообще правильно выглядит запись вызова функции или любой другой команды к бд psql через CRON. Везде включая форум пишут по разному. Пробовала всяко, ошибка одна и та же:
(CRON) info (No MTA installed, discarding output)

На данный момент запись в crontab от пользователя postgres выглядит так (взяла отсюда http://www.sql.ru/forum/483259/planirovshhik-dlya-postgres):

30 14 * * * psql -c 'select my_func();'

и как здесь http://www.sql.ru/forum/338956/cron через двойные кавычки тоже пыталась. и полное имя писала 'select mybd.public.my_func(); и просто запросами...всё никак.

Пыталась прописывать шапку SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin в файле crontab поскольку по умолчанию она не создалась. Всё бесполезно.
В функции всё просто пару пару простейших updateов. и она работает.

что где не так?
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626088
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_Ladyошибка одна и та же:
(CRON) info (No MTA installed, discarding output)
А это не ошибка вообще.
cron любой stdout и stderr от задач хочет передавать почтовому MTA для информирования причастных. У вас MTA не установлен никакой и соответствующая заметка об отбрасывании вывода задачи, т.к. отправлять его некуда.

Перенаправьте вывод команды в какой-нибудь файл чтобы посмотреть что пишет команда.
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626097
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,
Я знаю что это не ошибка, однако и cron не срабатывает. я в Linux как и в postgreSQL 2 дня. Да и после выполения данной задачки с этим работать не буду. Поэтому прошу вас более конкретно напишите пожалуйста что надо сделать? как перенаправить вывод команды в файл? можно пример?
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626110
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,
Подскажите, синтаксис самой записи вообще правильный?
Допустим такая запись сработает: * 06 * * * psql -c 'DELETE FROM my_table;'
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626122
gav21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команда может не выполняться, если не установлено переменное окружение.
Он просто может не знать где брать psql
Вызывайте в кроне скрипт .sh , а в нем уже пропишите переменное окружение и команду, типа такого:
#!/bin/bash
PATH=$PATH:$HOME/bin:/opt/rh/rh-postgresql95/root/usr/bin
LD_LIBRARY_PATH=/opt/rh/rh-postgresql95/root/usr/lib64
export LD_LIBRARY_PATH
export PATH
psql -c "select 1"


В кронтаб:
30 13 * * * /opt/script/script.sh > /dev/null 2>&1
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626466
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gav21PATH=$PATH:$HOME/bin:/opt/rh/rh-postgresql95/root/usr/bin
LD_LIBRARY_PATH=/opt/rh/rh-postgresql95/root/usr/lib64


простите за возможно глупый вопрос, но в строках выше Вы пишите /root/usr... а мой crontab работает от юзера postgres. Оно так сработает? или надо для тестирования, приведённый вами скрипт запустить как crontab от root?
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626718
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_Lady,
Какой результат возвращает функция?
Можете сделать скрипт в файле my_funk.sh. - https://habrahabr.ru/company/ruvds/blog/325522/
Если он выдает требуемый результат, добавляйте его в крон.
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626738
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus,
авторКакой результат возвращает функция?
Смысл в том что мне не нужен возврат результата. Мне нужно было сделать несколько независимых последовательных запроса: 2 - Deleta, 2 - COPY from .csv, 1 insert и 2- update. Ввиду отсутствия в СУБД инструмента - хранимая процедура, решила для краткости записать в функцию.
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39626797
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_Lady,

В качестве примера:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
-bash-4.2$ cat > /var/lib/pgsql/test_script.sh
#!/bin/bash
now=$(psql -c "select now();")
echo "#" $now >> /var/lib/pgsql/test_now

-bash-4.2$ chmod +x /var/lib/pgsql/test_script.sh

-bash-4.2$crontab -e
*/1 * * * * /var/lib/pgsql/test_script.sh

-bash-4.2$ cat test_now
# now ------------------------------- 2018-04-06 06:46:01.741198-04 (1 row)
# now ------------------------------- 2018-04-06 06:47:01.761285-04 (1 row)
# now ------------------------------- 2018-04-06 06:48:01.780037-04 (1 row)



Файл скрипта для вашего случая примерно такой:
Код: plsql
1.
2.
3.
#!/bin/bash
psql -c "select my_func1();"
psql -c "select my_func2();"
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627361
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus,
Сделала всё как Вы написали. С select now() в файле test_now символ #. текущее время отсутствует...
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627437
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_Lady,

из командной строки вызываются команды psql?
вроде:
Код: plsql
1.
-bash-4.2$ psql -c "select now();"
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627726
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus,

что значит запись автор-bash-4.2$

запуск полностью этой команды даёт результат: -bash: -bash-4.2$: command not found
запуск от пользователя авторpostgres@server:/root$ psql -c "select now();" даёт результат сначала запись авторcould not change directory to "/root": Permission denied а следующей строкой возвращает время.

запуск от пользователя root@server~#psql -c "select now();" даёт результат psql: FATAL: role "root" does not exist
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627766
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_Lady,
для запуска нужно перейти под пользователя postgres командой
Код: sql
1.
su - postgres


далее выполнить команду
Код: sql
1.
psql -c "select now();"


если она возвращает
Код: sql
1.
2.
3.
4.
              now
-------------------------------
 2018-04-10 02:31:26.243358-04
(1 row)


то можно приступать к формированию крипта.
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627880
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus,
при формировании скрипта "Permission denied". Ну это админы сейчас посмотрят И снова попробую.
А подскажите ещё пожалуйста, как в консоли правильно подать имя таблицы?
psql -c "DELETE FROM my_tbl;" даёт ошибку relation "my_tbl" does not exist.
public.my_tbl ошибка та же
пробовала как в MSSQL: DB.dbo.my_tbl, ошибка cross-database references are not implemented
пробовала как в pgadmin: DB.public.my_tbl, ошибка та же.
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627935
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_Ladyncux199rus,
при формировании скрипта "Permission denied". Ну это админы сейчас посмотрят И снова попробую.
А подскажите ещё пожалуйста, как в консоли правильно подать имя таблицы?
psql -c "DELETE FROM my_tbl;" даёт ошибку relation "my_tbl" does not exist.
public.my_tbl ошибка та же
пробовала как в MSSQL: DB.dbo.my_tbl, ошибка cross-database references are not implemented
пробовала как в pgadmin: DB.public.my_tbl, ошибка та же.

А имя базы то кто указывать будет (в коммандной строке)? Или у вас таблица в базе postgres?
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627959
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

вот я и спрашиваю синтаксис как верно указать?
допустим имя базы "DB", схема "public", имя таблицы "my_tbl"
в MS SQL полное имя выглядело бы как DB.dbo.my_tbl
в postgre это не работает.
На вообще форумах про кавычки пишут.
psql требует вне запроса указать имя базы.
Инфы не много, везде пишут по разному. По-моему пародия, а не СУБД (субъективно)...
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39627981
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_LadyMaxim Boguk,
///
. По-моему пародия, а не СУБД (субъективно)...

бгггг.
за что вас таких, поротий, на роботе держад ?
(и как часто)
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39628006
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_LadyMaxim Boguk,

вот я и спрашиваю синтаксис как верно указать?
допустим имя базы "DB", схема "public", имя таблицы "my_tbl"
в MS SQL полное имя выглядело бы как DB.dbo.my_tbl
в postgre это не работает.
На вообще форумах про кавычки пишут.
psql требует вне запроса указать имя базы.
Инфы не много, везде пишут по разному. По-моему пародия, а не СУБД (субъективно)...

С такими заходами и претензиями обращайтесь в платную поддержку Postgresql. Там что угодно за ваши деньги вплоть до чтения официальной документации в слух.

PS: вы документацию по psql пробовали прочесть? или psql --help сделать?
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39628205
s_Lady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Вы кажется модератор форума, однако изначально спрашивая о правильности написания синтаксиса, предварительно пересмотрев кучу документации и различных ссылок, понимая что вопрос жутко глупый, задача тривиальна, я указала 2 ссылки на Ваш форум, и как выяснилось ни там ни там не верно.
Ребят, для Вас, кто профессионал, но с этим бесплатным г...субд не работал, может кому пригодится. Как выяснилось верная запись это так:
автор 30 14 * * * psql -d myDB -c "delete from myTBL;"
Во всяком случае у меня CRON сработал, однако первоначальное предупреждение о MTA не пропало.

PS:
Кто бы сомневался, что Вы не сможете обойтись без оценочных суждений моих интеллектуальных способностей, делая выводы основываясь на полутора сообщениях о так любимом Вам ПО. На форумах без таких никуда... Банально! Именно из-за таких как Вы 70% людей ненавидят форумы... Поскольку, с уважением, извинениями, прося помощи у старших-опытных коллег, получают оскорбления. Самый распространённый вопрос, который дабы выставить себя "Богом" может написать чуть не каждый имбицыл:
авторPS: вы документацию пробовали прочесть? за что вас таких, на роботе держад?

Документация кривая, субд тоже, как минимум основываюсь на работе с текстовыми типами и их функциями, кривым преобразованиям типов, особенно даты\времени, вне стандарта придуманными функциями и т.д. Ваше мнение о моих профессиональных навыках - не интересно. Сидите, ковыряйте своё бесплатное Г...
За помощь ОГРОМНОЕ спасибо.
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39628226
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_Lady,

ми тут долго ждали, когда жи ви осилите export; cron и командную строку

молчали, крепились, ага

но тут ви полезли на пж как на буфет

типа он вам виноват, что вы ни доку не читаете
ни man ни --help набрать не можете
а туда же

форум ей виноват, ага

зы за навыки поиска по хоруму ++, за навыки осмысления прочитанного --
...
Рейтинг: 0 / 0
Вызов функции psql в CRON
    #39628276
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_Lady,
https://postgrespro.ru/docs/postgresql/10/app-psql
Код: plsql
1.
psql -d database -U user -c "select now();"
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вызов функции psql в CRON
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]