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도움이 중 하나를하지 않았다!
나는이 기본 기능이 내장되어 있지 않다고 믿을 수 없으므로 무언가를 놓친 것 같아요?
감사.
답변
현재 journalctl은 필드 일치에서 패턴 또는 와일드 카드를 지원하지 않습니다. grep
최선의 선택입니다.
나는 같은 문제가 있었고 인수로 전달 journalctl
될 때 VALUE와 정확히 일치 하는 항목 만 검색 한다고 생각합니다 NAME=VALUE
.
내 조사 :
-
맨 페이지
에서
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.
-
소스 코드
-
디버그 저널
디버그 출력을 사용하면를 사용할 때만 패턴이 확장 된 것을 볼 수 있습니다
-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* ...