답변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)를 참조하세요.