web-dev-qa-db-ja.com

SSH接続がオンのときにマシンがスリープしないようにする

デスクトップが非アクティブなときにサスペンドモードに切り替えることで、電力を節約しようとしています。しかし、多くのデスクトップも所有者によってSSH経由でアクセスされます。所有者がマシンのスイッチをオンにできるようにwakeonlanソリューションがデプロイされていますが、問題は、SSH接続がオンであっても、マシンが10分後に再び自動サスペンドすることです。

私がやろうとしているのは、「アクティビティ」定義にアクティブなSSHセッションを含めることです。

質問は、polkitルールを設定することで実行できますか?実際のサスペンドの前に実行するスクリプトを配置することで実行でき、SSHセッションが見つかった場合は中止できますか?これを行うための明確で合法的な方法が必要です。そうでない場合は、ハッキーな方法も歓迎します。

現在の素朴なハッキングソリューション:編集/usr/sbin/pm-suspend

#check for SSH sessions, and prevent suspending:
if [ "$(who | grep -cv "(:")" -gt 0 ]; then
    echo "SSH session(s) are on. Not suspending."
    exit 1
fi

これは目的を果たします。しかし、更新がファイル/usr/sbin/pm-suspendを上書きする時期はわかりません。また、これがtuxoniceのような他のサスペンド実装でどのように機能するかわかりません。

12
Bhavin Doshi

pm-action(8) を見て、セクション「FILES」で/etc/pm/sleep.dを検索してください。これらのスクリプトのいずれかがゼロ以外の終了ステータスで戻る場合、中断は防止されます。

明確にするために更新された手順:

  1. そのため、ファイル/etc/pm/sleep.d/05_ssh_keepawakeを作成します。

  2. Shebang#!/bin/sh)とこのファイルの質問に記載されているコードを入力します。

  3. 実行許可を設定します。

    chmod +x /etc/pm/sleep.d/05_ssh_keepawake
    
18
David Foerster