저는 RHEL 7을 사용하고 있으며 특정 서비스 "myservice.service"가 비활성화되는지 여부와 시기를 알고 싶습니다. 불행하게도 다음을 사용하여:
journalctl -u myservice.service
실제 서비스의 출력만 표시하는 것 같지만 어느 시점에서 출력이 중지되는 경우 이것이 원인인지는 알 수 없습니다.
- 서비스가 종료되었거나
- systemd는 여전히 서비스가 활성 상태라고 생각하지만 기본 코드 문제로 인해 실제 프로세스 자체가 더 이상 출력을 생성하지 않습니다.
기본적으로 systemctl 상태 이벤트 로그를 얻을 수 있는 방법이 있습니까?
답변1
자세한 내용은 시스템 로그를 확인하세요.
Red Hat의 경우:
/var/log/messages
Debian 기반 배포판의 경우:
/var/log/syslog
또한 특정 서비스에 대한 로그를 찾아야 합니다. 다음과 같을 수 있습니다.
/var/log/<yourservice>.log
이러한 로그는 모두 순환되므로 .log.1 및 .log.x.gz에서 이전 정보를 찾을 수 있습니다(이러한 로그를 압축하거나 zless 또는 vi를 사용해야 함).
좋은 검색
답변2
Linux 서비스가 비활성화되는 시기를 정확히 아는 방법은 무엇입니까?
systemd는 서비스가 상태 0으로 종료되고 "비활성(죽음)" 상태에 들어갈 때 기록하지 않는 것 같습니다. 이는 서비스가 실패하거나 시작 또는 중지될 때의 전환과 다릅니다.
Fedora 26에서는 systemd[1]: Started OpenBSD Secure Shell server와 같은 메시지가 표시됩니다. systemd[1]: OpenBSD Secure Shell 서버가 중지되었습니다.
sshd가 종료 상태 0으로 종료될 때 systemd는 반드시 기록하지 않습니다. 이것은 ssh 및 기타 데몬(아파치 등)이 SIGTERM :(. SIGKILL이 Journalctl -u: systemd[1]: ssh에 표시되는 경향이 있는 작업입니다. 서비스: 프로세스가 Main에서 종료되었습니다. 코드 = 종료됨, 상태 = 9/KILL.
그러나 RHEL(예: Fedora)에서는 감사를 활성화할 수 있습니다. 이것은 나를 위해 일했습니다
# journalctl --boot=-1 SYSLOG_IDENTIFIER=audit
...
Dec 30 13:51:38 localhost.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
...
Dec 30 13:52:08 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
fprintd는 유휴 기간 후에 완전히 종료되고 감사 메시지로만 기록되는 데몬의 예입니다.