如何让systemd服务在网络服务之前停止

如何让systemd服务在网络服务之前停止

我的服务需要 1 分钟到 30 秒才能启动或停止。我需要在网络服务之后启动并需要在网络服务之前停止。

当使用以下命令直接在终端上触发时,它效果很好。

# systemctl start ibmbpm
# systemctl stop ibmbpm

当我尝试关闭计算机时遇到问题。关闭速度非常快(大约 20 秒),因此我认为它不会等待我的服务完成即可关闭计算机,并且在日志中我可以看到连接到 8879 端口上的本地接口时出现问题。这就是为什么我认为它不会在停止网络之前等待我的服务停止的原因。

我可以在 WebSphere(IBM BPM) 日志中看到以下错误:

Caused by: com.ibm.websphere.management.exception.ConnectorException: ADMC0016E: ADMC0016E: the system cannot create a soap connector to connect to host bpmpfs01.XXXXXX.XXX at port 8879.

这是我的 systemd 服务文件

[Unit]
Description=IBM Business Process Manager 8.5.7
Requires=network.service
After=network-online.target

[Service]
Type=oneshot
ExecStart=/opt/IBM/ibmbpm start
RemainAfterExit=yes
KillMode=none
ExecStop=/opt/IBM/ibmbpm stop
TimeoutStopSec=600

[Install]
WantedBy=multi-user.target

有没有办法让它正常工作?我真的很感谢任何帮助。

答案1

尝试添加Wants=network-online.targetAfter=network.target

看一下:https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

相关内容