如何讓 systemd 等待一項服務完成關閉後再關閉另一項服務?

如何讓 systemd 等待一項服務完成關閉後再關閉另一項服務?

我有兩個服務:mysql 和 liferay。 Liferay的啟動依賴mysql,但liferay的shutdwon也依賴mysql。問題是systemd會在liferay關閉結束前關閉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

有任何想法嗎?

TIA

費爾南多

答案1

根據傑拉爾德的評論,答案似乎只是刪除“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

謝謝傑拉德!

相關內容