Как я могу просмотреть журналы journalctl по единицам и идентификаторам с помощью одной команды?

Зависит от вашего терминального окружения:

  • В Linux с консолью: openvt _command_
  • В терминале в screen: screen _command_
  • В X Windows (Mac также): xterm -e "_command_"
2
07.02.2019, 04:26
2 ответа

TL;DR :Это сработает:

$ journalctl _SYSTEMD_UNIT=vpn.service + SYSLOG_IDENTIFIER=vpn.sh

Вы можете использовать +, чтобы соединить два набора соединений и найти строки журнала журнала, которые соответствуют любому выражению. (Это задокументировано на справочной странице journalctl.)

Для этоговам нужно обращаться к ним по их собственным именам полей (флаги -uи -tявляются ярлыками для них.)

Документацию по именам полей можно найти в systemd.journal -fields (5 ). (На этой странице также объясняется, почему в одном из них есть начальное подчеркивание, а в другом нет.)

Для _SYSTEMD_UNITвам потребуется точное соответствие, включая суффикс .service(ярлык -uумный и найдет точное название единицы при переводе его в запрос по полю.)

Собрав все вместе, вы получите приведенную выше команду.

6
27.01.2020, 21:58

Я нашел альтернативное решение, которое хотел опубликовать. Некоторые люди находят это полезным. Я могу установить SyslogIdentifierв [Service]в файле модуля, чтобы он соответствовал идентификатору в моем сценарии.

Так

[Unit]
Description=vpn management service

[Service]
SyslogIdentifier=vpn.sh
Type=simple
ExecStart=/bin/bash /home/myusername/scripts/vpn.sh

Таким образом, идентификатор теперь будет соответствовать установленному в vpn.sh, когда я вызываю скрипт вручную. В верхней части скрипта устанавливается с помощью..

exec > >(systemd-cat -t vpn.sh) 2>&1

Теперь, чтобы просмотреть журналы как системного вызова vpn.sh, так и ручного вызова vpn.sh..

journalctl -t vpn.sh --since today

или

journalctl SYSLOG_IDENTIFIER=vpn.sh --since today
2
27.01.2020, 21:58

Теги

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