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

Ale*_*sky 8 suspend hibernate networking

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

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

小智 13

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

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

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


Luc*_*cas 7

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

我还必须添加一个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
Run Code Online (Sandbox Code Playgroud)

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

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