Я пытаюсь использовать 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
Это была ошибка документа , которая была закрыта после обновления опечатки на странице man
.
Отчет об ошибке привел к следующему комментарии в коде :
На самом деле мы не принимаем шаблоны, поэтому не заявляем об этом.
В качестве обходного пути вы можете использовать grep
как предложили в комментариях к вашему вопросу. Примерно так:
journalctl | grep sshd
Tista 'tiddefinixxi l-unit file meta tmexxi journalctl
.
journalctl -f -u sshd.service
Se nuri biss il-ġurnal ta' ] sshd
Первоначальные заголовки вопросов "Как использовать системные шаблоны журналов ". Это указывает на очень специфическую особенность 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
.