我可以改变活动 systemd 单元的 After= 吗?

我可以改变活动 systemd 单元的 After= 吗?

我有一个包含 ext4 文件系统映像的 NFS 文件系统。Linux 机器通过隐式挂载其中一个/dev/loop<n>。但是当 systemd 重新启动时,它显然会在尝试卸载子回送文件系统之前关闭 NFS。它无法卸载回送,因此无法重新启动,并在控制台上留下一系列以下消息:

systemd-journald: Failed to send WATCHDOG=1 notification message: Transport endpoint is not connected

我希望这个系统无需我按下硬件电源开关即可重新启动。我认为如果我可以告诉 systemd 环回和父文件系统之间的依赖关系,它就会这样做。这可能吗?我试过了systemctl set-property dev-loop0.device After=rawparents-1.mount,但它说Unknown assignment After=rawparents-1.mount.

此错误报告表示 systemd 不会自动理解涉及环回设备的依赖关系,并且它将无法获得这样做的能力。

答案1

我认为即使单元没有任何配置文件,您也应该能够定义插入文件。即:

mkdir -p /etc/systemd/system/dev-loop0.device.d/

cat > /etc/systemd/system/dev-loop0.device.d/after.conf << 'EOF'
[Unit]
After=rawparents-1.mount
EOF

systemctl daemon-reload

随后,检查文件是否已被处理systemctl show -p After dev-loop0.device

答案2

我从未使用过 set-property 子命令,但您可以执行它systemctl edit SERVICE来为单元添加覆盖。

同样,systemctl cat SERVICE非常有用,并且还包括对所涉及的文件的评论。

相关内容