Я пытаюсь использовать 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
Исходные заголовки вопросов: «Как вы используете systemd шаблоны journalctl". Это указывает на очень специфическую функцию journalctl под названием" MATCHES ", а не на обычную фильтрацию регулярных выражений.
Функция «МАТЧИ» подробно описана вместе со всеми другими функциями на удобном страница руководства в котором говорится в самом начале:
Если передан один или несколько аргументов соответствия, выходные данные фильтруются соответствующим образом.
Функция «совпадений» предназначена для фильтрации записей журнала на основе ряда возможных фильтров.
Для случаев, подобных тому, который указан в исходном вопросе, я делаю это так (я тоже запускаю ArchLinux).
Во-первых, вам нужно знать название интересующей вас службы. Обычно я делаю так:
systemctl | grep sshd
Я получаю это:
sshd.service loaded active running OpenSSH Daemon
Тогда вы можете спросить journalctl
для фильтрации по "имени модуля systemd" следующим образом:
journalctl _SYSTEMD_UNIT=sshd.service
Это называется «фильтрация совпадений». Вот и все.
В случае, если исходный вопрос был написан вместо "как подать заявку grep
to journalctl вывод ", то вы можете применить grep
в журналы, хранящиеся "пока" с
journalctl | grep ssh
или просмотрите текущие входящие записи журнала с помощью
journalctl -f | grep ssh
и нажмите CTRL-C, чтобы остановить поток. Конечно, вы можете использовать более сложные трубы с более мелкозернистыми регулярными узорами или несколькими grep
команды.
Вы можете определить файл модуля при запуске journalctl
.
journalctl -f -u sshd.service
Я покажу только журнал sshd