서비스가 이미 시작되었음을 systemctl에 알리는 방법


0

다음 mediation.service과 같은 서비스 단위 파일 이 있습니다.

[Unit]
Description=Mobile-IP Log dumper

[Service]
Type=forking
ExecStart=/opt/mediation/mediation start
ExecStopPost=/opt/mediation/mediation stop
ExecReload=/opt/mediation/mediation reload
PIDFile=/var/lib/mediation/syslog-ng.pid

이제 누군가가 /opt/mediation/mediation start대신 서비스를 직접 시작한다고 가정하십시오.systemctl start mediation

이 경우 다음 systemctl status mediation이 표시됩니다.

● mediation.service - Mobile-IP Log dumper
   Loaded: loaded (/etc/systemd/system/mediation.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Mon 2016-07-11 11:24:11 CEST; 8s ago
  Process: 14088 ExecStopPost=/opt/mediation/mediation stop (code=exited, status=0/SUCCESS)
  Process: 13482 ExecStart=/opt/mediation/mediation start (code=exited, status=0/SUCCESS)
 Main PID: 13746

그것은 가능성이 systemctl status mediation서비스의 올바른 상태 (예 : 실행)를 보여줍니다? systemctl이 상태를 확인할 때 PIDFile을 다시로드하지 않는 것 같습니다.이 경우 모든 정보를 사용할 수 있고 적절한 상태가 알려지기 때문입니다.


모바일 IP? 여전히 현재 작동합니까 것을, 그리고 어떻게 그것이 작동되도록 할 수 있습니다
grawity

Mobile-IP응용 프로그램의 내부 이름 일뿐입니다. Mobile-IP 프로토콜과 관련이 없습니다. 이름이 너무 똑똑하지는 않지만 변경하기에는 너무 늦습니다.
Wernfried Domscheit

답변:


3

아니요, 그렇게 할 수 없습니다.

systemd의 서비스 추적은 주로 cgroup을 기반으로하므로 프로세스 mediation.service 적절한 cgroup 내에 있지 않으면 프로세스의 일부로 간주 될 수 없습니다 . (예를 들어 다른 cgroup으로 이동하여 사용자 로그인이 sshd.service에서 분리되는 방식입니다.) 추가 확인을 위해 PID 파일을 사용하더라도 PID 파일에 대해서는 크게 신경 쓰지 않습니다.

그러나 프로세스가 / sys / fs / cgroup / systemd를 통해 올바른 cgroup으로 수동으로 이동하더라도 systemd 를 통해 시작되지 않으면 전체 서비스가 여전히 '활성'으로 간주되지 않습니다 .


/etc/init.d스크립트 가 여전히 혼합되어있는 데비안 및 기타 배포판에서는 수동으로 호출 된 경우 systemctl을 통해 initscript를 자동으로 다시 실행하도록 공통 "LSB 함수"스크립틀릿을 편집하여이 문제를 해결합니다.

그러나 데몬을 직접 시작하는 것에 관해서는 ... 음, 그렇게 생각하지 않습니까? 또는 수동 시작을 systemctl로 리디렉션하는 유사한 랩퍼 스크립트를 작성하십시오.


0

직접적인 해결책이 없으므로 해결 방법은 스크립트에 이러한 줄을 추가하는 것일 수 있습니다.

if [[ ! `ps --no-headers -o args -p $PPID | grep systemd` ]] ; then 
   echo "You must start the application with 'systemctl start mediation'"
   exit 1
fi

이렇게하면 서비스가 systemctl 외부에서 시작되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.