Systemd 서비스는 두 프로세스 중 하나만 시작하지만 OS가 다시 시작될 때만 시작됩니다.

Systemd 서비스는 두 프로세스 중 하나만 시작하지만 OS가 다시 시작될 때만 시작됩니다.

나는 두 개의 완전히 별도의 프로세스인 apache와 tomcat을 시작하는 systemd 단위 파일을 가지고 있습니다(댓글을 달기 전에 두 개의 별도 단위 파일을 만들어야 한다는 것을 알고 있지만 이 서버에 대한 권한은 엄격하게 잠겨 있습니다). SSH 세션을 통해 서비스를 시작하면 모든 것이 정상적으로 시작되고 중지됩니다. 그러나 서버가 다시 시작되면 Apache만 다시 시작되고 systemd는 모든 것이 정상이라고 주장합니다. Tomcat 로그를 확인해 보니 시작된 것으로 보이지만 어느 시점에서 프로세스가 종료됩니다.

이러한 행동 차이의 원인은 무엇입니까? 서비스를 시작하기 전에 다른 것을 기다려야 합니까?

유닛 파일:

[Unit]
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/home/opiusr/appstart.sh
ExecStop=/home/opiusr/appstop.sh

[Install]
WantedBy=multi-user.target

두 스크립트 모두 다음을 포함하는 래퍼입니다.

/bin/su - opiusr -c "/home/opiusr/bin/start_tomcat -s" >> $LOG_FILE
/bin/su - opiusr -c "/home/opiusr/bin/start_apache -s" >> $LOG_FILE

이 스크립트는 추가 로깅을 사용하여 Tomcat 및 Apache에 대한 시작 및 중지 스크립트를 래핑합니다.

편집: 나는 매우 유사한 이 답변을 보았습니다. Systemd는 서비스를 시작한 후 즉시 서비스를 종료합니다.

시스템이 잠겨 있으므로 제가 할 수 있는 다른 조치가 있는지 궁금합니다. 유닛 파일과 두 스크립트에 대한 전체 편집 권한이 있지만 새 서비스를 만들거나 시스템 디렉터리를 건드릴 수 없습니다.

관련 정보