从睡眠状态恢复后重新启动网络管理器的脚本

从睡眠状态恢复后重新启动网络管理器的脚本

当我的笔记本电脑从睡眠状态恢复时,wifi 连接不会恢复,并且我每次都必须从sudo service network-manager restart终端手动重新启动网络管理器。

我有一个可以做到这一点的脚本,但是它阻止了 PC 正确地从睡眠状态恢复,所以我不得不将其删除。

答案1

您应该能够在/etc/pm/sleep.d/目录中创建一个脚本(或者,/lib/systemd/system-sleep/如果您运行的是 15.10+,则应该是目录),该脚本在系统恢复时执行该重启命令。确保使该脚本可执行。

  1. 在上述目录中创建一个network_restart包含以下内容的文件:

    case "${1}" in
      resume|thaw)
        sudo service network-manager restart
    ;;
    esac
    
  2. 使文件可执行:sudo chmod +x network_restart

答案2

对于systemdUbuntu 16.04,你还应该考虑“pre”(暂停)和“post”(恢复)参数,${1}以便重新启动仅执行离开系统挂起状态后

我还必须添加一个sleep以便让网络扫描有足够的时间完成(我最好的猜测)。

$ sudo cat /lib/systemd/system-sleep/network-manager-restart 
#!/bin/sh
set -e

if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]; then
    case "$1" in
        post) sleep 10 ; systemctl restart network-manager ;;
    esac
fi

详细信息请阅读:https://www.freedesktop.org/software/systemd/man/systemd-suspend.service.html

在进入系统挂起和/或休眠状态之前,systemd-suspend.service(以及分别提到的其他单元)将运行 /usr/lib/systemd/system-sleep/ 中的所有可执行文件并向它们传递两个参数。第一个参数将是“pre”,第二个参数将是“suspend”、“hibernate”或“hybrid-sleep”,具体取决于所选的操作。离开系统挂起和/或休眠状态后,将立即运行相同的可执行文件,但第一个参数现在是“post”。此目录中的所有可执行文件都将并行执行,并且只有在所有可执行文件都完成后才会继续执行操作。

相关内容