Macがスリープしなくなった

なぜか突然MacBook Proがスリープ状態にならなくなりました。(ディスプレイはオフでネットワークもオフだけど、インジケータが点滅しない+ファンが動いてる)
電源ケーブルを抜くとスリープするけど、繋いでるといつまでも点いたまま。

Macbookで、電源が繋がった状態でスリープしない。閉じてもスリープしない。: Apple サポートコミュニティ https://discussionsjapan.apple.com/thread/10108604?start=0&tstart=0

私の場合は1つ目の「Activity Monitor から powerd を一回強制終了させる」で解決しました。

$ sudo killall powerd

でもスリープから復帰するたびにこれをやらないといけないので、すごい面倒。

自動化

sleepwatcherで自動化させました。

スリープ時に外付けHDDを自動切断する方法 - Macに夢中
http://good-morning-call.jimdo.com/2011/11/20/%E3%82%B9%E3%83%AA%E3%83%BC%E3%83%97%E6%99%82%E3%81%AB%E5%A4%96%E4%BB%98%E3%81%91hdd%E3%82%92%E8%87%AA%E5%8B%95%E5%88%87%E6%96%AD%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

$ brew install sleepwatcher
$ vim /usr/local/etc/sleepwatcher/rc.sleep

# 追加
killall powerd

$ sudo cp /usr/local/Cellar/sleepwatcher/2.2/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
$ sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist

これで復帰時に通知されるネットワークエラーの嵐に悩まされることもなくなりました。

参考

plistの中身を参考までに。スリープ時に /usr/local/etc/sleepwatcher/rc.sleepが、復帰時に /usr/local/etc/sleepwatcher/rc.wakeupが実行されると。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>de.bernhard-baehr.sleepwatcher</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/local/sbin/sleepwatcher</string>
		<string>-V</string>
		<string>-s /usr/local/etc/sleepwatcher/rc.sleep</string>
		<string>-w /usr/local/etc/sleepwatcher/rc.wakeup</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>KeepAlive</key>
	<true/>
</dict>
</plist>