本文已参与「新人创作礼」活动,一起开启掘金创作之路。
先声明一下我的分享逻辑,第一直接上自测命令(包括设置和恢复),然后给你分析下深入浅出的原理。
【mac省空间】大招之禁用safesleep休眠模式
一、行之有效的mac实操指令
1、查看休眠下(虚拟空间)占用的空间
cd /private/var/
ls -lh
注 : 清理之前大概有11个G的占用空间,这个是清理后的
2、修改虚拟内存的储存方式,并清空已缓存内容
sudo pmset -a hibernatemode 0
sudo rm -rf sleepimage
注 : hibernatemode指休眠模式,后面我会具体讲下它在mac中的作用
编辑
3、防止Os X继续创建虚拟空间文件,我们生成一个无法替换的空文件
sudo touch sleepimage
sudo chmod 000 /private/var/vm/sleepimage
注:通过创建一个不可自动编辑的文件来防止再被生成
4、重启电脑,之后查看此文件夹下空间
sudo shutdown -r now
cd /usr/var/vm
ls -lh
5、如果想重新开启safeSleep功能吗,只需要执行以下命令:
sudo pmset -a hibernatemode 3
sudo rm /private/var/vm/sleepimage
二、解决的痛点所在及原理解析
下面我给大家分析下这样做的深层原理:
1. 首先给大家普及下以上操作的基本概念,已熟悉的可以绕过:
Hibernate - mode(冬眠 - 模式),Mac的sleep模式, 冬眠或者说系统进入深度睡眠后,系统会将整个系统当前状态保存到硬盘上来避免数据丢失,下次唤醒时可以恢复到之前的运行状态,这种情况下可能会产生一些比较占磁盘空间的缓存数据。
默认情况下,2013年或之后生产的Mac将在睡眠三个小时后进入待机模式。 大约70分钟的睡眠后,旧版Mac将进入待机模式。 在待机模式下,Mac会将其内存中的内容保存到磁盘上,然后关闭以节省电量,但是再次使用时,将需要更长的时间才能使用。(电脑电力耗尽之后系统也会强制将当前状态写入磁盘)为了避免这样对SSD的写入操作,所以笔者选择将Hibernatemode 设置为0。
2.MacOSX的冬眠模式为何会吃掉你的储存空间?解密以上解决办法的原理!
用SSD 的朋友硬盘空间不大,需要节省。而 MacOSX的冬眠模式会自动放一个和内存等大的名叫「sleepimage」的文件到 /private/var/vm 目录,换言之,你的内存是多少 GB,就有多少 GB 的硬盘空间会被这个文件吃掉。
以前介绍过用命令行方法禁用冬眠模式,只要在终端里运行 sudo pmset -a hibernatemode 0 即可。但这招在 Mac OS X 10.7 (Lion) 以上版本似乎行不通,禁用之后删除 sleepimage,过不了多久它又会死灰复燃。我试过一个叫 SmartSleep 的软件,同样无效。最后网上搜到上面哪个偏方才得以把以上问题解决,这个偏方的原理是将一个体积极小的同名文件放入 sleepimage 所在的目录(/private/var/vm),并禁止系统对该文件进行写操作。