systemd 서비스의 현재 서비스 상태를 표시하는 방법은 무엇입니까?

systemd 서비스의 현재 서비스 상태를 표시하는 방법은 무엇입니까?

여기에 이미지 설명을 입력하세요.

서비스(test.service) 가 있는데 systemd명령을 사용할 때 그림에 표시된 정보를 보고 싶습니다 systemctl status test.service. 특히 이 [상태: ] 줄을 보고 싶습니다 avahi-daemon 0.6.30 starting up. 내 서비스는 지금 그것을 표시하지 않습니다. starting/start/stop/stopping/restartStatus:...를 통해 서비스의 현재 상태를 표시하려고 합니다 .

어떻게 해야 하나요?

당신의 도움을 기대합니다. 감사해요!

답변1

그 유용성을 과대평가하고 있을 수도 있습니다 :).

"시작/시작/중지/중지/다시 시작"의 경우 systemd에 표시되어야 합니다. (예를 들어 "활동: 활동(실행 중)"이라고 표시됩니다.)완료 알림을 시작하는 몇 가지 방법을 구현하는 한. 그러면 Systemd는 정확한 정보를 표시할 수 있습니다.

좋은 점은 귀하가 요청한 사람이 읽을 수 있는 상태 메시지와 동일한 기능을 사용하여 서비스 준비 알림이 전송된다는 것입니다 :).

장기 실행 프로그램을 작성하는 경우가능한STOPPING=1사용자가 systemd 등을 통하지 않고 프로세스에 직접 신호를 보내는 경우를 추가로 구현하기로 결정했습니다 systemctl stop test.service. RELOADING=1나는 systemd가 사용될 때 해당 상태를 표시하기를 원하는 경우에도 이 접근 방식이 필요하다고 생각합니다 systemctl reload test.service. (중지의 경우, systemd는 프로그램이 언제 종료되었는지 알고 있습니다... 프로세스가 종료되었음을 확인할 수 있기 때문입니다.)


C 프로그램에서:https://www.freedesktop.org/software/systemd/man/sd_notify.html

상태=...

서비스 상태를 설명하는 한 줄 UTF-8 상태 문자열을 서비스 관리자에게 다시 전달합니다. 이는 자유 형식이며 다양한 목적으로 사용될 수 있습니다. 일반 상태 피드백, fsck와 같은 프로그램은 완료율을 통과할 수 있으며 실패한 프로그램은 사람이 읽을 수 있는 오류 메시지를 전달할 수 있습니다. 예: "STATUS=파일 시스템 검사의 66%가 완료되었습니다..."

쉘 스크립트로서의 명령:https://www.freedesktop.org/software/systemd/man/systemd-notify.html

--status=

데몬의 자유 형식 상태 문자열을 init systemd로 보냅니다. 이 옵션은 상태 문자열을 인수로 사용합니다. 이는 systemd-notify STATUS=....와 동일합니다. 이 옵션의 의미에 대한 자세한 내용은 sd_notify(3)를 참조하세요.

관련 정보