Ubuntu 16.04를 사용하고 있는데 Journalctl 로그를 분석할 때 이상한 동작이 나타납니다.
필터링되지 않은 출력은 다음과 같습니다(모든 관련 필드를 포함하기 위해 json 출력을 사용했습니다).
$ journalctl -o json-pretty --since "2018-01-11 12:00:00" --until "2018-01-11 12:00:05"
{
"__CURSOR" : "s=bac060082d1c447a972958f176cdcec7;i=1d2a2e;b=a948062f9f0b4091ae299c0523a99111;m=337bc483bf3;t=5627c5f8a3bae;x=7fd2518d6b70b9d",
"__REALTIME_TIMESTAMP" : "1515661201914798",
"__MONOTONIC_TIMESTAMP" : "3537916935155",
"_BOOT_ID" : "a948062f9f0b4091ae299c0523a99111",
"_TRANSPORT" : "stdout",
"PRIORITY" : "6",
"SYSLOG_FACILITY" : "3",
"SYSLOG_IDENTIFIER" : "start.sh",
"_PID" : "6474",
"_UID" : "1000",
"_GID" : "1000",
"_COMM" : "start.sh",
"_EXE" : "/bin/bash",
"_CMDLINE" : "/bin/bash /usr/local/malibu/start.sh",
"_CAP_EFFECTIVE" : "0",
"_SYSTEMD_CGROUP" : "/system.slice/malibu.service",
"_SYSTEMD_UNIT" : "malibu.service",
"_SYSTEMD_SLICE" : "system.slice",
"_MACHINE_ID" : "f03ff2ad269ea529c82323dd57f29b00",
"_HOSTNAME" : "terminal",
"MESSAGE" : "2018-01-11 12:00:01.914 DEBUG: malibu.devices.validator.ValidatorPortService$ - health check succeeded"
}
보시다시피 출력에는 로그 메시지가 포함되어 있습니다.
하지만 -u malibu.service
장치 이름( )으로 필터를 추가하면 다음 메시지가 사라집니다.
$ journalctl -u malibu.service -o json-pretty --since "2018-01-11 12:00:00" --until "2018-01-11 12:00:05"
_SYSTEMD_UNIT
단위 이름은 필터링되지 않은 출력의 필드와 정확히 동일합니다. 왜 Journalctl이 필터링된 버전에 표시되지 않습니까?
편집하다:알고 보니 이전 버전의 systemd(229)를 사용하고 있었고 최신 버전은 236이었고 최신 Journalctl을 사용하면 문제가 해결되었습니다. 안타깝게도 229는 16.04 LTS 기준으로 사용 가능한 최신 systemd 버전이므로 이 문제에 대한 합리적인 해결 방법이 없습니다(사용자 공간에서 최신 systemd를 빌드하고 새로 빌드된 Journalctl 바이너리를 직접 사용하는 것 외에는).
답변1
알고 보니 이전 버전의 systemd(229)를 사용하고 있었고 최신 버전은 236이었고 최신 Journalctl을 사용하면 문제가 해결되었습니다. 안타깝게도 229는 16.04 LTS 기준으로 사용 가능한 최신 systemd 버전이므로 이 문제에 대한 합리적인 해결 방법이 없습니다(사용자 공간에서 최신 systemd를 빌드하고 새로 빌드된 Journalctl 바이너리를 직접 사용하는 것 외에는).