如何在挂起之前防止(或延迟) wifi / 以太网睡眠?

如何在挂起之前防止(或延迟) wifi / 以太网睡眠?

我有一个具体的问题。我想在挂起或关闭计算机之前自动卸载 Samba (cifs) 共享。因此我创建了一个脚本来/lib/systemd/system-sleep实现这一点。

#!/bin/sh

case $1/$2 in
        pre/*)

        if mountpoint -q /path/to/share  # if share is mounted 
        then
            umount /path/to/share  # unmount
        else
            exit 0  # otherwise do nothing
        fi
        ;; 
esac

此脚本的问题在于,如果计算机进入睡眠状态(挂起),则在此脚本执行之前,所有网络连接都会被终止/终止(无线/有线也是如此)。因此,如果没有互联网连接,脚本就无法检查是否/path/to/share已安装,并且会使整个系统冻结约 1 分钟。

如果我在 if 语句之前添加service network-manager restart,它会完美地工作,因为它会在互联网连接被终止后重新建立它们。这可能是一个解决方案,但不是很好:它增加了暂停所需的时间。如果我可以在暂停或延迟之前阻止终止/终止连接(至少在脚本执行之前),那就更好了。

答案1

将脚本放入

/etc/NetworkManager/dispatcher.d/pre-down.d/

网络管理器独立于 systemd 监听挂起计算机的系统调用,因此这必须通过网络管理器来完成。

请注意,只要接口出现故障,就会触发脚本,这在我的机器上没有问题,但在你的机器上可能不行。可能可以检查是否已发出暂停 D-Bus 信号,但我没有探索过这一点。网络管理器 gitlab 跟踪器上有一张关于此问题的票: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/910

相关内容