Wie kann ich systemd dazu bringen, zu warten, bis ein Dienst vollständig heruntergefahren ist, bevor ein anderer Dienst heruntergefahren wird?

Wie kann ich systemd dazu bringen, zu warten, bis ein Dienst vollständig heruntergefahren ist, bevor ein anderer Dienst heruntergefahren wird?

Ich habe zwei Dienste: mysql und liferay. Der Start von Liferay hängt von mysql ab, aber das Herunterfahren von Liferay hängt auch von mysql ab. Das Problem ist, dass systemd mysql herunterfährt, bevor das Herunterfahren von liferay abgeschlossen ist. Wenn ich „systemctl stop mysql“ ausführe, werden beide Dienste gleichzeitig heruntergefahren, und liferay hat keinen mysql-Dienst, um sein eigenes Herunterfahren abzuschließen.

Ich habe den Dienst von Liferay wie folgt deklariert:

[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

Irgendwelche Ideen?

TIA

Fernando

Antwort1

Gemäß Geralds Kommentar scheint die Antwort einfach darin zu bestehen, „Requires=“ zu entfernen.

Diese Version funktioniert:

[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

Danke, Gerald!

verwandte Informationen