有人能告诉我如何在主机关闭期间开始卸载文件系统之前先停止 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
答案1
这几乎肯定是您的服务 (fdb) 出了问题。systemd 将首先尝试停止所有服务,然后执行卸载。确保您的服务在合理的时间内停止 - 如果需要更多时间才能正常停止,您可以将其设置TimeoutStopSec=
为更高的值。此外,请确保它Type=simple
是合适的,从外观上看Type=forking
可能会更好。切换时Type=forking
通过添加来使用 PID 文件PIDFile=/var/run/fdb/fdbmonitor.pid
- 如果它实际上包含主进程 PID。
如果您正在使用网络挂载共享,systemd 应该在关闭网络之前检测它们并卸载它们。如果没有发生这种情况,请添加_netdev
挂载选项以告诉 systemd 这实际上是一个网络共享。