Linux 서비스가 비활성화되는 시기를 정확히 아는 방법은 무엇입니까?

Linux 서비스가 비활성화되는 시기를 정확히 아는 방법은 무엇입니까?

저는 RHEL 7을 사용하고 있으며 특정 서비스 "myservice.service"가 비활성화되는지 여부와 시기를 알고 싶습니다. 불행하게도 다음을 사용하여:

journalctl -u myservice.service

실제 서비스의 출력만 표시하는 것 같지만 어느 시점에서 출력이 중지되는 경우 이것이 원인인지는 알 수 없습니다.

  1. 서비스가 종료되었거나
  2. 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는 유휴 기간 후에 완전히 종료되고 감사 메시지로만 기록되는 데몬의 예입니다.

관련 정보