하나의 명령을 사용하여 Journalctl 로그를 단위 및 식별자별로 보는 방법은 무엇입니까?

하나의 명령을 사용하여 Journalctl 로그를 단위 및 식별자별로 보는 방법은 무엇입니까?

로그를 보는 데 사용할 수 있는 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.

관련 정보