MacBookのスリープ機能を自由に切り替えるには

毎度ごぶさたしております。

MacBookでは「Safe Sleep」と呼ばれるスリープ状態が標準設定されています。これは、スリープ中にバッテリーが完全に消費されてしまっても、ハードディスクに保存されたメモリ内容を使って復帰できるというものです。反面、完全にスリープするまでに時間がかかる、メモリと同容量のハードディスク領域を消費する、というデメリットもあります。そこで、今回はこのスリープ状態を自由に切り替える方法をご紹介します。

以下の3つのモードを切り替えられるようにします(カッコ内は対応するコマンド)。

・Sleep mode (pmset -a hibernatemode 0)
 スリープへの移行時間、復帰時間ともに最速です。ハードディスク領域は節約できますが、スリープ中にバッテリー切れになると、作業中の内容は失われます。部屋や会議室間の移動や、離席時など、短時間スリープさせたい時におすすめです。

・Safe sleep mode (pmset -a hibernatemode 3)
 スリープへの移行は若干遅いですが、復帰はSleep mode同様最速です。ハードディスクはメモリと同容量消費しますが、スリープ中にバッテリー切れになっても、ACアダプタを接続すれば復帰できます。MacBookの標準設定は、このモードです。

・Deep sleep mode (pmset -a hibernatemode 1)
 スリープへの移行も復帰も最も遅くなります。ハードディスクはメモリと同容量消費しますが、スリープ中はバッテリーをほぼ消費しません。自宅と会社間の移動や、旅行、就寝時など、長時間スリープさせたい時におすすめです。

前説が長くなりましたが、早速作業に入りましょう。

■スリープ機能を切り替えるワークフローを作成する
「ワークフロー」とはMac OS Xに標準で付いている、一連の作業を自動で行なう機能です。ワークフローを作成するには「Automator」というアプリケーションを使います。

 アプリケーションフォルダを開き、「Automator」をダブルクリックして起動する
  

 「ライブラリ」から「テキストエディット」を選択し、表示された「アクション」から「テキストの入力を求める」を、右の「ワークフローを作成するには、ここにアクションをドラッグまたは追加してください」までドラッグ
  

 追加された「テキストの入力を求める」アクションの「テキスト▼」をクリックし、「前のアクションからの結果を無視する」を選択
  

 「質問」のテキストボックスに「Sleep mode (0)に切り替えます」と入力してから、optionキーを押しながらenterキーを押して改行を挿入し、続けて「管理者のパスワードを入力してください」と入力して、「回答を必須にする」にチェックを付ける
  

※画面上は「管理者の~」しか見えませんが、カーソルキーで移動することで1行目の「Sleep mode~」も確認できます。また、入力するメッセージは自由に変更して構いません。

 「ライブラリ」から「Automator」を選択し、「アクション」から「シェルスクリプトを実行」を、右の「テキストの入力を求める」アクションの下にドラッグ
  

 「テキストの入力を求める」アクションから「シェルスクリプト」アクションに入力内容が引き渡されるようになった
  

 「シェルスクリプトを実行」アクションにあらかじめ入力されている「cat」を削除し、下記のコマンドを入力する
  

※スリープ機能を、Sleep modeに設定する
sudo pmset -a hibernatemode 0
※Sleep modeでは不要になるイメージファイルがあれば削除する
if [ -f /var/vm/sleepimage ]; then
sudo rm /var/vm/sleepimage
fi

【補足:テキストエディットからシェルスクリプトに入力内容を引き渡す意味】
シェルスクリプトとは、ターミナルで入力するコマンドを自動実行する仕組みのことです。シェルスクリプトでスリープ機能を切り替えるコマンドは「pmset -a hibernate 0」の部分ですが、このコマンドは管理者権限で動作するため、「sudo」コマンドによって管理者権限で実行する必要があります。そこで、ここではテキストエディットのアクションを使い、スリープ機能の確認メッセージを表示しつつ、管理者パスワードを入力させて、シェルスクリプトに管理者パスワードを引き渡す、という動作をさせています。

 「ファイル」メニューの「プラグインを別名で保存」をクリック
  

 「保存するプラグインの名前」を入力し、「プラグインの対象」が「Finder」となっていることを確認して、「保存」ボタンをクリック
  

※ここでは、スリープ機能の名前(Sleep mode)とコマンドのパラメータ(0)がわかるような名前を付けましたが、ご自分のわかりやすい名前で構いません。Windowsとそろえるなら「サスペンド」などでも良いでしょう。

これで、スリープ機能をSleep mode(ハードディスクにイメージを作らず、メモリ内容を保持するスリープ機能)に変更するワークフローが作成できました。同様の手順で、Safe sleep modeとDeep sleep modeに変更するワークフローを作成します。

10 同様に手順1~6(手順4のメッセージは「Safe sleep mode (3, default)に切り替えます」に変更)を行ない、「シェルスクリプトを実行」アクションにあらかじめ入力されている「cat」を削除し、下記のコマンドを入力する
  

※スリープ機能を、Safe sleep modeに設定する
sudo pmset -a hibernatemode 3

「ファイル」メニューの「プラグインを別名で保存」をクリックして、「保存するプラグインの名前」を入力し、「プラグインの対象」が「Finder」となっていることを確認して、「保存」ボタンをクリック
  

11 同様に手順1~6(手順4のメッセージは「Deep sleep mode (1)に切り替えます」に変更)を行ない、「シェルスクリプトを実行」アクションにあらかじめ入力されている「cat」を削除し、下記のコマンドを入力する
  

※スリープ機能を、Safe sleep modeに設定する
sudo pmset -a hibernatemode 1

「ファイル」メニューの「プラグインを別名で保存」をクリックして、「保存するプラグインの名前」を入力し、「プラグインの対象」が「Finder」となっていることを確認して、「保存」ボタンをクリック
  


■作成したワークフローを実行する
作成したワークフローはFinderのプラグインとして保存されています。実行するには、デスクトップでコンテキストメニューを表示し、「Automator」サブメニュー項目から選択します。

 デスクトップをControlキーを押しながらクリックし、コンテキストメニューから「Automator」-「(変更したいスリープ機能)」をクリック
  

2 管理者のパスワードを入力して「OK」ボタンをクリック
  

これでスリープの機能が切り替わりました。液晶パネルを閉じて、スリープ状態の移行スピードを確認してみてください。

・液晶を閉じて1~2秒ほどでLEDが点滅
 Sleep mode (pmset -a hibernatemode 0)が有効になっています。

・液晶を閉じて10秒前後※してからLEDが点滅
 Safe sleep mode (pmset -a hibernatemode 3)が有効になっています。

・液晶を閉じて20秒前後※してからLEDが消灯
 Deep sleep mode (pmset -a hibernatemode 1)が有効になっています。

※Safe sleep modeとDeep sleep modeに入る時間は、搭載メモリ容量とメモリ利用量によって大きく異なる場合があります。

今回の記事作成にあたり、下記のWebサイトを大変参考にさせていただきました。

sudo コマンドを AppleScript から操作する - dark side of the moon (kaoru arimura様)

2007年03月13日(火) Sleep モード再考 - MacFreak (sHarada様)

それでは、また。
コメント ( 2 ) | Trackback ( 1 )
« Complete PCバ... iTunesライブ... »
 
コメント
 
 
 
Unknown (Unknown)
2009-02-15 19:35:01
電源が切れているのにスリープ中がパカパカ光っているねは壊れたのかな?
 
 
 
電源が切れていない状態ではないでしょうか?>Unknown様 (管理人)
2009-03-31 02:33:24
お返事が大変遅くなり、誠に申し訳ございませんでした。>Unknown様

すでに解決済みかとは存じますが、電源が切れていながらLEDが点滅するという状態は通常では考えにくく、故障の可能性もあります。

しかし、本記事の手順を実行して直後からそのような現象が見受けられるようでしたら、Safe Sleep Modeに戻し、PRAMのリセットを行うなどしてから、動作を確認してみていただけますでしょうか。

MacのPRAMおよびMVRAMをリセットする
http://support.apple.com/kb/HT1379?viewlocale=ja_JP

よろしくお願いいたします。
 
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。
数字4桁を入力し、投稿ボタンを押してください。
 
この記事のトラックバック Ping-URL
 


ブログ作成者から承認されるまでトラックバックは反映されません
 
※ブログ管理者のみ、編集画面で設定の変更が可能です。
 
 
[Leopard]仮想メモリ と スリープ用メモリイメージ (モドキ の日記 by MacBook Pro)
Apple news radio ワンボタンの声で話題になっていたので.... 仮想メモリは、ターミナルで $ls /var/vm で確認もできますが、ファインダでも確認できます。 Shift + コマンド + G の移動で、 /var/vm に移動すれば、仮想メモリのファイルを確認できます。こんな感じです...