V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  macOS

禁止 OS X 生成 sleepimage 的方法

  •  
  •   Livid · 2013-04-13 16:42:45 +08:00 · 8160 次点击
    这是一个创建于 4237 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://www.maclife.com/article/howtos/how_remove_diskhogging_sleepimage_file_your_mac

    sudo pmset -a hibernatemode 0

    对于大内存但是硬盘是 SSD 的机器,还是很有意义的。
    17 条回复    2020-08-06 22:37:16 +08:00
    WarWithinMe
        1
    WarWithinMe  
       2013-04-13 17:31:54 +08:00
    这个方法其实是不完全的。
    如果是直接sleep(alfred->sleep)的话,swapfile不会创建。
    但是如果是只是合上盖子的话,swapfile还是会被创建的。
    dqaria
        2
    dqaria  
       2013-04-13 18:00:23 +08:00
    小内存 ssd 怎么破。。。
    Livid
        3
    Livid  
    MOD
    OP
       2013-04-13 18:01:21 +08:00
    @dqaria 小内存机器上这个不是问题,但是在 16G 内存的机器上,就是一坨 16G 的 sleepimage 啊……
    humiaozuzu
        4
    humiaozuzu  
       2013-04-13 18:04:22 +08:00   ❤️ 1
    禁止生成 sleepimage 后,电话唤醒时会快很多
    dqaria
        5
    dqaria  
       2013-04-13 18:10:57 +08:00
    @Livid 哦。。就是睡眠时将内存暂存在ssd里啊~~那禁止生成以后没有什么坏处吗?虽然我的内存只有4g。。但ssd也只有128g。。。所以能省尽量省~~
    lightening
        6
    lightening  
       2013-04-13 18:40:20 +08:00   ❤️ 1
    @WarWithinMe 自从关掉后就再也没有被创建过,无论怎么sleep


    @dqaria 坏处是万一sleep时没电了,还没有保存的东西就丢了。(要sleep到没电,估计你从来没遇到过吧)
    alexrezit
        7
    alexrezit  
       2013-04-13 20:17:20 +08:00   ❤️ 1
    贴上 @WarWithinMe 说的 swapfile 的禁用方法:

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
    sudo rm /private/var/vm/swapfile*

    建议大内存机器使用.

    重新启用需要进入 single user mode:

    sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
    1212e
        8
    1212e  
       2013-04-13 22:21:46 +08:00   ❤️ 1
    官方推荐的睡眠模式有三种:0,3,25
    默认值:3

    sudo pmset -a hibernatemode 0
    睡眠后继续对内存供电,不在硬盘上保存内存的镜像(sleepimage),唤醒时从内存恢复数据。

    sudo pmset -a hibernatemode 3
    睡眠后继续对内存供电,同时在硬盘上保存内存的镜像(sleepimage),唤醒时从内存恢复数据。

    sudo pmset -a hibernatemode 25
    睡眠后不对内存供电,在硬盘上保存内存的镜像(sleepimage),唤醒时从硬盘恢复数据。
    优点是睡眠期间比较省电(电池供电的话),缺点是唤醒慢(但我 SSD 完全感觉不到慢)
    wuma
        9
    wuma  
       2013-04-14 11:16:42 +08:00
    以前查过,似乎sleepImage还起点防范作用的,比如sleep了一个月没开机,电用完了,关了sleepImage的话,内存中的内容就丢了
    wuma
        10
    wuma  
       2013-04-14 11:33:53 +08:00   ❤️ 1
    又查了一下,10.8.2之后需要lock一个空sleepimage来防止自动创建。

    https://discussions.apple.com/thread/4492672?start=0&tstart=0

    Ok so I managed to solve my problem. Basically, I couldn't prevent the sleepimage to rebuilt even though my hibernate mode is set to 0, I don't know why but now my sleepimage weights 0 byte instead of 8 gigs. Here's the deal :

    First, disable hibernation mode :
    sudo pmset -a hibernatemode 0

    delete /private/var/vm/sleepimage :
    sudo rm /private/var/vm/sleepimage

    create an empty file and name it 'sleepimage' :
    touch /private/var/vm/sleepimage

    change his flag to immuable :
    chflags -uchg /private/var/vm/sleepimage

    That's it ! Now, OS X won't be able to rebuilt over your sleepimage file since it is locked. This one worked for me, hope it'll work for those who encounter the same problem as mine.
    wuma
        11
    wuma  
       2013-04-14 11:39:19 +08:00
    删除该文件除了省空间并且启动略快点,另一意义在于,每天写一个4g/8g/16g的文件,不符合ssd的养生之道

    除了空文件,还有更狠的
    sudo ln -s /dev/null /var/vm/sleepimage
    gfreezy
        12
    gfreezy  
       2013-04-14 15:33:20 +08:00
    @wuma 应该是 chflags uchg /private/var/vm/sleepimage 没有横线
    WarWithinMe
        13
    WarWithinMe  
       2013-04-15 10:43:10 +08:00
    @alexrezit 其实我说错了,是sleepimage。。。在我的机器上面,hibernatemode为0时,是sleepimage会在合上盖子的时候重新创建,但后续再合上盖子sleepimage没有被modify。
    alexrezit
        14
    alexrezit  
       2013-04-15 10:50:38 +08:00
    @WarWithinMe
    我的 (10.8.3) 就不会重新创建.
    ohhe
        15
    ohhe  
       2013-04-15 12:13:48 +08:00 via iPhone
    我的ssd剩余空间一直小于2G,8G内存的话是不是创建不了image
    zucknet
        16
    zucknet  
       2013-04-16 15:47:23 +08:00
    放着吧 8g空间还可以
    Chadit
        17
    Chadit  
       2020-08-06 22:37:16 +08:00
    最近才关注到 sleepimage 这个问题,搜到了一篇文章觉得还不错,分享给以后可能会搜到这个问题的 V 友 http://www.iyeele.com/641.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3450 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.