저는 Retrospect라는 백업 소프트웨어 클라이언트용 systemd 스크립트를 작성하고 있습니다. 소프트웨어는 일반적인 Linux 운영 방식을 따르지 않습니다. 프로그램에서 상태를 얻는 것은 프로그램이 실행 중임을 의미합니다 retrocpl -status
. 여기에는 현재 systemd가 자동으로 수집하지 않는 중요한 정보가 포함되어 있습니다. 어떻게든 상태 출력에 추가할 수 있나요?
[Service]
ExecStart=/usr/local/retrospect/client/retroclient
ExecStop=/usr/local/retrospect/client/retrocpl -stop
Restart=on-failure RestartSec=60s
저는 systemd 229와 함께 Ubuntu 16.04를 사용하고 있습니다.
$ systemd --version
systemd 229
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN
$ lsb_release -d
Description: Ubuntu 16.04.1 LTS
편집: Wieland가 지적한 잘못된 정보를 제거했습니다. 감사해요!
답변1
systemd에는 애플리케이션이 표시되는 서비스 관리자에게 메시지를 보낼 수 있는 프로토콜이 있습니다 systemctl status
. 이를 애플리케이션 자체에서 구현해야 합니다. 애플리케이션은 능동적이어야 합니다.보내다상태 알림.
추가 읽기
- 레나르트 페틀링(2010).
sd_notify()
. 시스템 매뉴얼 페이지. freedesktop.org. - 레나르트 페틀링(2010).
systemd-notify
. 시스템 매뉴얼 페이지. freedesktop.org. - 조나단 데보인 폴라드(2015). "정식 서버의 고의적인 위반으로 인해 채택이 제한됨가지다합의를 통과했다"Unix 데몬의 준비 프로토콜 문제. 자주 주어지는 답변입니다.
- 조나단 데보인 폴라드(2015). "클라이언트 자격 증명을 추출할 때 동기화 프로토콜 사용"Unix 데몬의 준비 프로토콜 문제. 자주 주어지는 답변입니다.