Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.10.2022
Сообщений: 10

Pgbadger Wildcards

23.11.2022, 16:14. Показов 504. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Решил освоить pgbadger.
На Debian 11 установил 12 версию pgbadger.
Bash
1
sudo pgbadger /var/lib/postgresql/14/main/pg_log/postgresql-2022-11-23_135947.log -o /home/administrator/pgbadger.html
отлично формирует отчет. Но я видел возможность использования * для создания отчета по всем файлам

Но почему то
Bash
1
sudo pgbadger /var/lib/postgresql/14/main/pg_log/postgresql-* -o /home/administrator/pgbadger.html
выдает ошибку


Bash
1
2
FATAL: logfile "/var/lib/postgresql/14/main/pg_log/postgreql-*" must exist!
    - Error at line 2513
Может кто подскажет куда копать?
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2022, 16:14
Ответы с готовыми решениями:

Wildcards
В туториале от Оракла написано: The wildcard is never used as a type argument for a generic method invocation, a generic class instance...

Wildcards 2
Как я понял, создавать коллекцию таким образом бесполезно, т.к нельзя будет добавлять элементы. List<?> list = new...

Проблеммы с Wildcards
AClass - мой абстрактный класс MyI - мой интерфейс public <T extends AClass & MyI> T get(....); - тут не какой ошибки ...

4
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
23.11.2022, 21:49
Лучший ответ Сообщение было отмечено ps1xReboot как решение

Решение

sudo здесь ломает подстановку *
два варианта на выбор:
1)
сделайте сначала sudo su
а потом уже запускайте pgbadger как у вас
2)
намудрить как-то так
Bash
1
sudo sh -c 'pgbadger /var/lib/postgresql/14/main/pg_log/postgresql-* -o /home/administrator/pgbadger.html'
1
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
24.11.2022, 09:14
Спасибо админам, подправили разметку (что-то я не то выбрал)
Заодно перечитал сообщение, понял что надо внести ясность в первое предложение.

Конечно, не sudo ломает подстановку - это я поторопился и написал так, что ломается смысл.
Здесь сама по себе подстановка вилдкарда (*) не может быть выполнена по причине отсутствия доступа к указанным файлам под тем пользователем, под которым автор пытается запустить команду, и, соответственно, символ * остается как есть в командной строке, далее передается как часть аргумента в sudo, ну а тот послушно это запускает также как есть. В результате ищем файл со звездочкой в имени ну и следствием является закономерная ошибка pgBadger-а.
1
0 / 0 / 0
Регистрация: 13.10.2022
Сообщений: 10
24.11.2022, 09:40  [ТС]
Большое спасибо.
В моем случае еще обработало вот такое
Bash
1
sudo pgbadger `sudo find /var/lib/postgresql/14/main/pg_log/ -name "postgreql*"`  -o /home/administrator/pgbadger4.html
А можно чуть подробнее, что под капотом происходит c sudo если используется * и у пользователя нет доступа к файлам? Понятно, что * передается как есть, но это же параметр pgbadger который должен ее обработать?
0
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
24.11.2022, 20:12
Все что вы вводите с командной строки, сначала обрабатывается оболочкой командной строки (shell = bash, csh ... у кого, что настроено). Для оболочки символ звездочка - это управляющий символ, который посредством глоббинга (globbing) - по-простому подстановка - превращается в конкретный набор аргументов, составляющих имена файлов.

поэтому в вашем случае, если бы у текущего пользователя был бы доступ к логам Постгрес, то вместо
Bash
1
pgbader /var/lib/postgresql/14/main/pg_log/postgresql-*
превратилось в нечто, например, такое
Bash
1
pgbadger /var/lib/postgresql/14/main/pg_log/postgresql-202211241200.log /var/lib/postgresql/14/main/pg_log/postgresql-202211241300.log /var/lib/postgresql/14/main/pg_log/postgresql-202211241400.log
и т.д. сколько там файлов есть в директории, столько и будет.

поскольку доступа нет, то и подставлять что-то не получится, и * становится обычным символов и дальше уже зависит от программы как она отнесется к этой звездочке. pgBadger ничего с ней не делает, а считает ее обычным символом, составляющим имя файла. Ну и далее справедливая ошибка о не существовании файла.

Глоббинг можно вот так не хитро подсмотреть (пусть имя скрипта test.sh)
Bash
1
2
3
4
5
6
7
8
#!/bin/bash
 
echo "number of args: $#"
echo "arguments: $*"
echo "arg1: $1"
echo "arg2: $2"
echo "arg3: $3"
echo "..."
далее идем в какую-нибудь директорию
Code
1
2
test /var/lib/postgresql/14/data # pwd
/var/lib/postgresql/14/data
распечатаем список каких-нибудь файлов в этой директории
Code
1
2
3
4
5
test /var/lib/postgresql/14/data # ls -la *.conf
lrwxrwxrwx 1 root     root     30 апр 23  2022 pg_hba.conf -> /etc/postgresql-14/pg_hba.conf
lrwxrwxrwx 1 root     root     32 апр 23  2022 pg_ident.conf -> /etc/postgresql-14/pg_ident.conf
-rw------- 1 postgres postgres 88 апр 23  2022 postgresql.auto.conf
lrwxrwxrwx 1 root     root     34 апр 23  2022 postgresql.conf -> /etc/postgresql-14/postgresql.conf
и запустим test.sh
Code
1
2
3
4
5
6
7
test /var/lib/postgresql/14/data # ./test.sh *.conf
number of args: 4
arguments: pg_hba.conf pg_ident.conf postgresql.auto.conf postgresql.conf
arg1: pg_hba.conf
arg2: pg_ident.conf
arg3: postgresql.auto.conf
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2022, 20:12
Помогаю со студенческими работами здесь

WildCards - producer <? extends V>
Почему producer может принимать null (и только null)? Принцип PECS мне понятен. Интересует &quot;техническая сторона&quot;

Java wildcards эквивалент в generic type
В java есть такая штука, как wildcards, которая является расширением generic types. Пример с использованием &lt;?&gt; public...

Детерминированный конечный автомат из шаблонов поиска (wildcards) и регулярных выражений
С программным построение автомата для шаблона a*bc*d??e* проблем не возникает. Но с шаблоном, который не оканчивается на звёздочку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru