有人可以告诉我如何在主机关闭期间开始卸载文件系统之前先停止 systemd 服务吗?
单元文件如下所示
[Unit]
Description=FDB Service
After=network-online.target
Wants=network-online.target
[Service]
Environment=FDB_PID_DIR=/var/run/fdb/
Environment=LOCKFILE=/var/run/fdb/fdbmonitor.pid
Type=simple
User=ubuntu
Group=ubuntu
IgnoreSIGPIPE=false
ExecStart=/bin/bash /home/ubuntu/build-target/fdb/fdb-sysd-start.sh
ExecStopPost=-/home/ubuntu/build-target/fdb/fdb-sysd-poststop.sh
RestartSec=2s
Restart=always
[Install]
WantedBy=multi-user.target
- 操作系统 -
Ubuntu 16.04.6
这几乎肯定是您的服务 (fdb) 的问题。systemd 将首先尝试停止所有服务,然后进行卸载。确保您的服务在合理的时间内停止——如果它需要更多时间来优雅地停止,您可以设置
TimeoutStopSec=
一个更高的值。另外,确保Type=simple
是合适的,从它看起来Type=forking
可能会更好。当切换到Type=forking
使用 PID 文件时,添加PIDFile=/var/run/fdb/fdbmonitor.pid
- 如果它实际上包含主进程 PID。如果您正在使用网络挂载的共享,systemd 应该在关闭网络之前检测它们并卸载它们。如果这没有发生,请添加
_netdev
mount 选项来告诉 systemd 这实际上是一个网络共享。