bashスクリプトの実行中にMacのスリープを停止し、完了したら通常どおりスリープさせる


13

夜中にMacを起動して、rsyncを実行してバックアップします。これは、[省エネルギー]> [スケジュール]で設定します。

ただし、何かを実行する前にスリープ状態に戻っているようですので、rsyncを実行するbashスクリプトの実行中にスリープ状態を停止する必要があります。

可能な場合は、rsyncする前にスリープタイムアウトを「Never」または非常に長いタイムアウトに設定し、完了したら通常の状態に戻すコマンドを発行するのが最善の方法だと考えました。これを行うためのより良い解決策はありますか?


スーパーユーザーにする必要がありますか?
キムベー

回答:


18

カフェイン

例えば:

caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder

manページから:

EXAMPLE
     caffeinate -i make
        caffeinate forks a process, execs "make" in it, and holds an
        assertion that prevents idle sleep as long as that process
        is running.

詳細man caffeinateを参照してください。


11

Mac OS X 10.8(Mountain Lion)以降

caffeinateコマンドを使用します。参照してくださいネイサンロングの答えman caffeinate詳細については、を。

Mac OS X 10.7(Lion)およびそれ以前

マニュアルページに埋もれていますが、pmsetにはスリープを防ぐための非常にシンプルなモードがあります。コマンドを実行すると、pmset noidleそのプロセスが強制終了されるまでMacが起動されます。スクリプトで使用する方法は次のとおりです。

# launch process to prevent sleep and move it to the background
pmset noidle &
# save the process ID
PMSETPID=$!

... do stuff here ...
... don't fall asleep ...
... watch out for that tree!
... ok we're free and clear now ...

# kill pmset so the computer can sleep if it wants to
kill $PMSETPID

これは、pmsetを使用してスリープ設定を変更するよりも優れています。これには、ルートアクセスと(良い市民になりたい場合)現在の設定を検出し、完了したら元に戻す何らかの方法が必要です。


2
pmset noidle廃止されました:manページには:が記載されていますThis argument is deprecated in favor of caffeinate(8)。私の答えをご覧ください。
ネイサンロング14

4

試して

man pmset

:-)

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