systemd의 journalctl : 메시지로 필터링하는 방법?


8

journalctl 은 로그를 살펴 보는 데 유용한 도구처럼 보이지만 간단한 질문처럼 느껴집니다 update-ipsets. 구가 포함 된 모든 cron 메시지를보고 싶습니다 .

물론 나는 이것을 할 수있다

journalctl -u cron.service | grep update-ipsets

그러나 journalctl 출력의 다른 모든 이점 (컬러 코딩, 자동 페이징, 라이브 뷰 등)을 잃습니다.

난 노력 했어:

journalctl -u cron.service MESSAGE=update-ipsets
journalctl -u cron.service "MESSAGE=*update-ipsets*"
journalctl -u cron.service "MESSAGE=.*update-ipsets.*"
journalctl -u cron.service "MESSAGE=/.*update-ipsets.*/"

그리고 당신은 타격에 의해 실험을하지 않을 tab이후 MESSAGE=중단 (zsh을 / 데비안 제시) 쉘과 - Ctrl-C도움이 중 하나를하지 않았다!

나는이 기본 기능이 내장되어 있지 않다고 믿을 수 없으므로 무언가를 놓친 것 같아요?

감사.

답변:


3

현재 journalctl은 필드 일치에서 패턴 또는 와일드 카드를 지원하지 않습니다. grep최선의 선택입니다.

나는 같은 문제가 있었고 인수로 전달 journalctl될 때 VALUE와 정확히 일치 하는 항목 만 검색 한다고 생각합니다 NAME=VALUE.

내 조사 :

  1. 맨 페이지

    에서 journalctl(1)

    일치하는 설명에 패턴이 언급되지 않았습니다.

     [...] A match is in the format "FIELD=VALUE", e.g.
     "_SYSTEMD_UNIT=httpd.service", referring to the components
     of a structured journal entry. [...]
    

    매뉴얼 페이지는 -u옵션 만 설명 할 때 패턴을 나타냅니다 .

       -u, --unit=UNIT|PATTERN
           Show messages for the specified systemd unit UNIT 
           (such as a service unit), or for any of the units
           matched by PATTERN. 
    
  2. 소스 코드

    fnmatchin 기능 은 src/journal단위 만 검색 할 때 사용됩니다 .

  3. 디버그 저널

    디버그 출력을 사용하면를 사용할 때만 패턴이 확장 된 것을 볼 수 있습니다 -u.

    $ SYSTEMD_LOG_LEVEL=debug journalctl -n1 -u gdm*
    ...
    Matched gdm.service with pattern _SYSTEMD_UNIT=gdm*
    Matched gdm.service with pattern UNIT=gdm*
    Journal filter: ((OBJECT_SYSTEMD_UNIT=gdm.service AND _UID=0) OR (UNIT=gdm.service AND _PID=1) OR (COREDUMP_UNIT=gdm.service AND _UID=0 AND MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1) OR _SYSTEMD_UNIT=gdm.service)
    ...
    

    다음을 포함한 모든 경기는 다음과 같이 정확합니다 UNIT.

    $ SYSTEMD_LOG_LEVEL=debug journalctl -n1 UNIT=gdm.*
    ...
    Journal filter: UNIT=gdm*
    ...
    

1
이것은 실제로 마지막 시스템 릴리즈 github.com/systemd/systemd/commit/…
Bigon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.