web-dev-qa-db-ja.com

スリープから再開した後にNetwork Managerを再起動するスクリプト

私のラップトップがスリープから再開すると、wifi接続は再開されず、端末からSudo service network-manager restartを使用して毎回ネットワークマネージャーを手動で再起動する必要があります。

それを行うスクリプトがありましたが、PCが適切にスリープ状態から復帰できなかったため、削除する必要がありました。

7

システムの再開時にその再起動コマンドを実行するスクリプトを/etc/pm/sleep.d/ディレクトリ(または15.10+を実行している場合はおそらく/lib/systemd/system-sleep/ディレクトリ)に作成できるはずです。そのスクリプトを実行可能にしてください。

  1. これらのコンテンツを使用して、上記のディレクトリにnetwork_restartファイルを作成します。

    case "${1}" in
      resume|thaw)
        Sudo service network-manager restart
    ;;
    esac
    
  2. ファイルを実行可能にします:Sudo chmod +x network_restart
10
dsomach

Ubuntu 16.04のsystemdの場合、${1}の "pre"(サスペンド)および "post"(再開)引数も考慮する必要があります。そのため、再起動はafterシステムを中断します

また、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 /内のすべての実行可能ファイルを実行し、2つの引数を渡します。最初の引数は「pre」で、2番目は選択したアクションに応じて「suspend」、「hibernate」、または「hybrid-sleep」です。システムのサスペンドやハイバネーションを終了した直後に同じ実行可能ファイルが実行されますが、最初の引数は「ポスト」になりました。このディレクトリ内のすべての実行可能ファイルは並行して実行され、すべての実行可能ファイルが終了するまでアクションの実行は継続されません。

6
Lucas