回答:
これはすぐに使用できるソリューションではありませんが、他の誰も解決策を考え付かない場合に機能する可能性があります:-)
コマンドを使用して、電源管理設定を操作できます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のマニュアルをご覧ください。
OS Xに組み込まれているpmsetユーティリティには、必要な設定を行うことができる設定があります。設定および付随する説明についてpmset
は、マンページを確認してくださいttyskeepawake
。
次のコマンドはおそらくあなたが望むことをするでしょう:
sudo pmset -c ttyskeepawake 1
この-c
フラグは、コンピューターが(バッテリーまたはUPS電源ではなく)AC電源で実行されている場合に特にこの設定をアクティブttyskeepawake 1
にし、アクティブなttyセッション(おそらくリモートセッション)中にコンピューターがスリープしないようにします。セッションがスリープタイマーよりも長い間非アクティブになっている場合はスリープを許可しますが、それが問題である場合は、コンピューターをスリープ状態に設定しないでください。
Mac OS X 10.8以降、このcaffeinate(8)
コマンドを使用できるはずです。
試してみてくださいcaffeinate -s ssh server.example.com
。
次のスクリプトを追加しました .bash_profile
if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
caffeinate -s $SHELL --login
exit $?
fi
プロセスがsshデーモンの直接の子である場合、saffeセッション中にシステムがスリープしないようにcaffeinate(8)コマンドを介して同じシェルを実行します。
Macでの睡眠を防ぐための Web検索では、使用できるユーティリティとトリックに関する多くの優れた情報が提供されます。
しかし、あなたの状況では、あなたが本当にやりたいことは、Macがスリープしないようにする非常に簡単なコマンドラインプログラムを実行する別のsshセッションを持つことだと思います。Appleは完全なソースコードをTechnical Q&A 1160:Preventing sleepで提供しています。(残念ながら、このページは現在Appleのサイトでは壊れていますが、Googleのキャッシュからコピーを取得できます。)
このプログラムがsshセッションから正常に実行できるかどうかを確認するテストは行っていませんが、できるようです。
sshfsの実装は通常、常にリモートシステムにログインしたままではなく、ファイルやディレクトリが必要なときにセッションを実行するだけです。したがって、不眠症プログラムを実行するには、最小化された端末ウィンドウで実行する別のsshセッションが必要です。
このアプローチの利点は、sudoを使用したり、システムの電源管理設定を台無しにしたりする必要がないことです。