로그를 보는 데 사용할 수 있는 VPN 서비스 장치가 있습니다...
journalctl -u vpn
VPN과 수동으로 상호작용하고 이를 기록하는 스크립트도 있습니다...
exec > >(systemd-cat -t vpn.sh) 2>&1
다음을 사용하여 로그를 볼 수 있습니다.
journalctl -t vpn.sh
나는 두 로그를 모두 보려고 시도했습니다.
journalctl -u vpn -t vpn.sh
그러나 그것은 작동하지 않았습니다.
두 로그를 동시에 볼 수 있는 방법이 있나요? 아니면 내 스크립트의 식별자( ) -t vpn.sh
와 일치하도록 VPN 서비스 단위 파일의 식별자( )를 설정할 수 있습니까 ?vpn.sh
답변1
요약: 다음과 같이 작동합니다.
$ journalctl _SYSTEMD_UNIT=vpn.service + SYSLOG_IDENTIFIER=vpn.sh
+
두 개의 조인 집합을 조인하고 두 표현식 중 하나와 일치하는 로그 줄을 찾을 수 있습니다 . (이 내용은 Journalctl의 매뉴얼 페이지에 설명되어 있습니다.)
-u
이렇게 하려면 올바른 필드 이름(플래그 및 -t
단축키) 으로 참조해야 합니다 .
당신은 볼 수 있습니다systemd.journal-필드(5)필드 이름에 대한 문서입니다. (해당 페이지에는 하나는 밑줄로 시작하고 다른 하나는 없는 이유도 설명되어 있습니다.)
_SYSTEMD_UNIT
접미사를 포함하여 정확히 일치하는 항목이 필요하기 때문입니다 .service
( -u
바로가기는 스마트하며 필드별 쿼리로 변환할 때 정확한 단위 이름을 찾습니다.)
그것들을 합치면 위의 명령을 얻을 수 있습니다.
답변2
게시하고 싶은 대체 솔루션을 찾았습니다. 어떤 사람들은 그것이 유용하다고 생각합니다. 내 스크립트의 식별자와 일치하도록 단위 파일에서 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를 수동으로 호출하는 systemd의 로그를 살펴보십시오.
journalctl -t vpn.sh --since today
또는
journalctl SYSLOG_IDENTIFIER=vpn.sh --since today
답변3
서비스 이름도 식별자로 사용할 수 있는 것 같습니다. 아래와 같은 Kuman이 저에게 효과적입니다.
journalctl -t vpn -t vpn.sh
-t, --identifier=SYSLOG_IDENTIFIER 지정된 시스템 로그 식별자 SYSLOG_IDENTIFIER를 사용하여 메시지를 표시합니다.
This parameter can be specified multiple times.