Зависит от вашего терминального окружения:
openvt _command_
screen _command_
xterm -e "_command_"
TL;DR :Это сработает:
$ journalctl _SYSTEMD_UNIT=vpn.service + SYSLOG_IDENTIFIER=vpn.sh
Вы можете использовать +
, чтобы соединить два набора соединений и найти строки журнала журнала, которые соответствуют любому выражению. (Это задокументировано на справочной странице journalctl.)
Для этоговам нужно обращаться к ним по их собственным именам полей (флаги -u
и -t
являются ярлыками для них.)
Документацию по именам полей можно найти в systemd.journal -fields (5 ). (На этой странице также объясняется, почему в одном из них есть начальное подчеркивание, а в другом нет.)
Для _SYSTEMD_UNIT
вам потребуется точное соответствие, включая суффикс .service
(ярлык -u
умный и найдет точное название единицы при переводе его в запрос по полю.)
Собрав все вместе, вы получите приведенную выше команду.
Я нашел альтернативное решение, которое хотел опубликовать. Некоторые люди находят это полезным. Я могу установить 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