我的关机需要相当长的时间(我使用的是 Debian 8.1),我发现可以通过在关闭系统之前卸载网络驱动器来修复它。显然,在卸载所有驱动器之前,网络已断开连接。
为了自动执行此操作,我尝试创建一个 systemd 服务,但它不起作用,即它似乎没有及时卸载,并且关闭过程仍然需要很长时间。我的方法的灵感来自这个问题的答案以及一些 systemd.service 手册页的浏览...
[unit]
description=Unmount network drives on shutdown
Before=shutdown.target reboot.target halt.target network.target
[Service]
type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/sh umount /media/networkdrive1 /media/networkdrive2
[Install]
WantedBy=multi-user.target
编辑
网络驱动器通过以下行安装在 /etc/fstab 中:
//192.168.1.5/networkdrive1 /media/nw1 cifs _netdev,uid=myuser,credentials=/home/myuser/.credfile
//192.168.1.5/networkdrive2 /media/nw2 cifs _netdev,uid=myuser,credentials=/home/myuser/.credfile
答案1
经过 3 天的搜索和测试,我开发了一个可行的解决方案——适用于 Debian-Jessie、Linux Mint、i386(32 位)安装。我有网络 cifs 共享,如果不首先卸载这些共享,则会挂起关闭或重新启动 120 秒。使用此脚本,我不必在重新启动或关闭之前手动卸载共享。
自动 cifs umount 脚本,在关机和重新启动时运行
创建以下脚本
/etc/init.d/aaaumount
(脚本按数字和字母顺序执行,这就是 的原因aaa
,所以它首先运行):#!/bin/sh # # aaaumount initscript # ### BEGIN INIT INFO # Provides: aaaumount # Required-Start: $local_fs $remote_fs # Required-Stop: $remote_fs # Default-Start: S # Default-Stop: 0 1 6 # Short-Description: umounts cifs shares # Description: This script unmounts cifs shares ### END INIT INFO case "$1" in stop) umount -t cifs -af esac
使其可执行:
sudo chmod 755 /etc/init.d/aaaumount
在 /lib/systemd/system/ 中创建指向服务的符号链接:
cd /lib/systemd/system/ sudo ln -s /dev/null aaaumount.service
/etc/rc0.d
在和中创建符号链接/etc/rc6.d
(0
和6
是关闭/重新启动运行级别):sudo ln -s /etc/init.d/aaaumount /etc/rc0.d/K01aaaumount sudo ln -s /etc/init.d/aaaumount /etc/rc6.d/K01aaaumount
激活它:
sudo systemctl enable aaaumount.service
答案2
将挂载选项添加_netdev
到 中的远程文件系统/etc/fstab
。之后,systemctl daemon-reload
这应该使您的网络安装remote-fs.target
;的依赖项用 来检查systemctl list-dependencies remote-fs.target
。在网络关闭之前,此类文件系统将被卸载。
答案3
经过一番尝试和错误后,我想wpa_supplicant.service
,在 Ubuntu 16.04 上,我的系统使用 Wi-Fi 所必需的,并没有真正由 systemd 管理(并且其 systemd 单元被“禁用”)。它似乎是通过 DBus 启动的。我还是不知道为什么,但它被关闭了前 network-online.target
和network.target
。
最后,为了确保我的驱动器正确卸载,我将其添加After=graphical.target
到安装单元中。为此,您可以添加x-systemd.requires=graphical.target
到文件中的选项/etc/fstab
,如下所示:
请注意,您需要安装实用程序(在我的例子中为mount.cifs
)来忽略以 开头的选项,这在6.5 版本之前x-
不是这种情况。mount.cifs