다른 서비스를 종료하기 전에 서비스가 종료될 때까지 systemd가 기다리도록 하려면 어떻게 해야 합니까?

다른 서비스를 종료하기 전에 서비스가 종료될 때까지 systemd가 기다리도록 하려면 어떻게 해야 합니까?

mysql과 liferay라는 두 가지 서비스가 있습니다. Liferay 시작은 mysql에 따라 다르지만 liferay의 종료도 mysql에 따라 다릅니다. 문제는 liferay의 종료가 끝나기 전에 systemd가 mysql을 종료한다는 것입니다. "systemctl stop mysql"을 실행하면 두 서비스가 동시에 종료되기 시작하고 liferay에는 자체 종료를 완료할 mysql 서비스가 없습니다.

Liferay의 서비스는 다음과 같이 선언되었습니다.

[Unit]
Description=Liferay Portal
After=network.target,mysql.service
Requires=mysql.service

[Service]
Type=forking
WorkingDirectory=/opt/liferay
ExecStart=/opt/liferay/liferay-ce-portal/tomcat/bin/startup.sh
User=liferay
Group=liferay
Restart=always

[Install]
WantedBy=multi-user.target

어떤 아이디어가 있나요?

티아

페르난도

답변1

Gerald의 의견에 따르면 대답은 단순히 "Requires="를 제거하는 것 같습니다.

이 버전은 트릭을 수행합니다.

[Unit]
Description=Liferay Portal
After=mysql.service

[Service]
Type=forking
WorkingDirectory=/opt/liferay
ExecStart=/opt/liferay/liferay-ce-portal/tomcat/bin/startup.sh
User=liferay
Group=liferay
Restart=always

[Install]
WantedBy=multi-user.target

고마워요 제럴드!

관련 정보