Как Вы используете journalctl шаблоны systemd

Я пытаюсь использовать journalctlсопоставление с образцом на SYSLOG_IDENTIFIERS. Как пример, у меня есть тонна отмеченного сообщения sshd:

$ journalctl -t sshd | wc -l
987

но если я пытаюсь использовать сопоставление с образцом для нахождения их:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

В journalctl странице справочника говорится, что шаблоны должны работать, но я не могу найти ничто больше о том, как шаблоны используются/определяются в systemd.

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

Я выполняю ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
21
задан 29 February 2016 в 22:23
3 ответа

Это была ошибка документа , которая была закрыта после обновления опечатки на странице man .

Отчет об ошибке привел к следующему комментарии в коде :

На самом деле мы не принимаем шаблоны, поэтому не заявляем об этом.

В качестве обходного пути вы можете использовать grep как предложили в комментариях к вашему вопросу. Примерно так:

journalctl | grep sshd
15
ответ дан 2 December 2019 в 20:06

Tista 'tiddefinixxi l-unit file meta tmexxi journalctl .

journalctl -f -u sshd.service

Se nuri biss il-ġurnal ta' ] sshd

-2
ответ дан 2 December 2019 в 20:06

Первоначальные заголовки вопросов "Как использовать системные шаблоны журналов ". Это указывает на очень специфическую особенность journalctl, называемую "Спички", а не фильтрация общих регулярных выражений.

Особенность "Спички" полностью детализирована вместе со всеми другими особенностями на дружественной странице man page, которая в самом начале утверждает:

Если передается один или более аргументов совпадений, то выходные данные фильтруются Соответственно

Функция "соответствует" предназначена для фильтрации записей журнала на основе ряда возможных фильтров.

Для случаев, подобных тому, что было в исходном вопросе, это то, как я это делаю (я тоже запускаю ArchLinux).

Во-первых, вам нужно знать имя сервиса, который вас интересует. Обычно я делаю так:

systemctl | grep sshd

Я получаю так:

sshd.service       loaded active running   OpenSSH Daemon

Тогда вы можете попросить journalctl отфильтровать по "имени системной единицы", как это:

journalctl _SYSTEMD_UNIT=sshd.service

Это называется "фильтрация совпадений". Так и есть.

Если вместо этого был написан исходный вопрос "как применить grep к выходу journalctl", то вы можете либо применить grep к журналам, хранящимся "пока" с помощью

journalctl | grep ssh

, либо посмотреть на входящие записи журнала с помощью

journalctl -f | grep ssh

и нажать CTRL-C, чтобы остановить поток. Конечно, можно использовать более сложные трубы либо с более мелкими регулярными деталями, либо с несколькими командами grep.

.
0
ответ дан 2 December 2019 в 20:06

Теги

Похожие вопросы