OS X:sshセッション中にコンピューターがスリープしないようにする方法


29

私がするとのsshOS Xの私のネットワーク上のコンピュータまでのセッションが続くOS Xがになり、スリープモード。

マウスを物理的にぶつけたり、キーを入力したり、スリープ機能を手動で無効にしたりする以外に、SSHセッション中にこれが発生するのを防ぐ方法はありますか?

編集:sshセッションは通常、単純なsshfsマウントです。


また、SSHセッションのにスリープ状態ならないようにしませんか?
SamB

回答:


9

これはすぐに使用できるソリューションではありませんが、他の誰も解決策を考え付かない場合に機能する可能性があります:-)

コマンドを使用して、電源管理設定を操作できますpmset。詳細については、マンページを参照してください。

操作したい興味深い設定はsleepです:

sleep-システムスリープタイマー(分単位の値、または無効にする場合は0)

したがって、次のコマンドを使用できます。

sudo pmset sleep 25      # go to sleep after 25 minutes
sudo pmset sleep 0       # disable sleep

次に、ログインおよびログアウト後にこれらのコマンドをトリガーする必要があります。この権利を覚えていれば、BashはMac OS Xのデフォルトのシェルであり、次の2つのファイルにアクセスできます。

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits

ホームディレクトリでそれらを編集または作成し、適切なコマンドを追加します。必要に応じて、現在のスリープ値を一時ファイルに保存し、後で復元します。

最後に解決する問題は、sudoのパスワードプロンプトです。ユーザーにパスワードなしでpmsetを起動する許可を与えるには、sudoeditで/ etc / sudoersを編集します。NOPASSWDタグを使用する必要があります。これが初めての場合は、sudoersのマニュアルをご覧ください。


1
ssh接続がsshfsマウントのみであった場合、この方法は機能しますか?
ステファン

1
よくわかりませんが、sshfsがログインシェルを開くとは思わないので、sshfsでは動作しません。
echox

9

これにより、Macが電源に接続されている限り、SSH経由でMacを使用できました。

システム環境設定、省エネルギー、ディスプレイがオフのときにコンピューターが自動的にスリープしないようにする

Macが電源を切ると、すべてがシャットダウンするため、バッテリーの寿命を気にする必要はありません。


1
このオプションはmacOS Sierraでは役に立ちません。私のiMacは、この設定に関係なくスリープし、SSHアクセスで起動し、SSHログアウトの直後にスリープします。それは本当に迷惑です。
ブルーノフィリップ

この回答は最終的にモハーベのiMac上の時間の〜/ .ssh / configにと周りいじるの後に私の問題を解決
N1000

6

OS Xに組み込まれているpmsetユーティリティには、必要な設定を行うことができる設定があります。設定および付随する説明についてpmsetは、マンページを確認してくださいttyskeepawake

次のコマンドはおそらくあなたが望むことをするでしょう:

sudo pmset -c ttyskeepawake 1

この-cフラグは、コンピューターが(バッテリーまたはUPS電源ではなく)AC電源で実行されている場合に特にこの設定をアクティブttyskeepawake 1にし、アクティブなttyセッション(おそらくリモートセッション)中にコンピューターがスリープしないようにします。セッションがスリープタイマーよりも長い間非アクティブになっている場合はスリープ許可します、それ問題である場合は、コンピューターをスリープ状態に設定しないでください。


6

SSHを使用してリモートOSXマシンでシェルを開き、SSHセッションの期間中にシェルがスリープしないようにするには:

$ ssh -t me@mymacbook caffeinate -i bash

5

Mac OS X 10.8以降、このcaffeinate(8)コマンドを使用できるはずです。

試してみてくださいcaffeinate -s ssh server.example.com


9
OPは、リモート Mac(つまり、sshサーバー)がスリープしないようにしようとしています。誤解がない限り、この例はクライアントの端末でのスリープのみを防止します。
オーウェン

3

次のスクリプトを追加しました .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $SHELL --login
  exit $?
fi

プロセスがsshデーモンの直接の子である場合、saffeセッション中にシステムがスリープしないようにcaffeinate(8)コマンドを介して同じシェルを実行します。


2

Macでの睡眠を防ぐための Web検索では、使用できるユーティリティとトリックに関する多くの優れた情報が提供されます。

しかし、あなたの状況では、あなたが本当にやりたいことは、Macがスリープしないようにする非常に簡単なコマンドラインプログラムを実行する別のsshセッションを持つことだと思います。Appleは完全なソースコードをTechnical Q&A 1160:Preventing sleepで提供しています。(残念ながら、このページは現在Appleのサイトでは壊れていますが、Googleのキャッシュからコピーを取得できます。)

このプログラムがsshセッションから正常に実行できるかどうかを確認するテストは行っていませんが、できるようです。

sshfsの実装は通常、常にリモートシステムにログインしたままではなく、ファイルやディレクトリが必要なときにセッションを実行するだけです。したがって、不眠症プログラムを実行するには、最小化された端末ウィンドウで実行する別のsshセッションが必要です。

このアプローチの利点は、sudoを使用したり、システムの電源管理設定を台無しにしたりする必要がないことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.