Может ли кто-нибудь сообщить мне, как я могу сначала остановить службу 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, что это на самом деле сетевой ресурс.