阻止 Mac 休眠
更新于 · 作者 Anton Shakirov
一个漫长的下载、一次渲染、一次构建、一场接着外接显示器的通话。Mac 完全不知道这些事要紧,偏偏在中途就把屏幕调暗了。hop 让它醒着,醒多久由你说了算;你一做完,睡眠就还回去。

| what it is | keep awake inside hop, a menu bar app for macOS |
|---|---|
| price | free — no trial, no pro tier, no account |
| licence | MIT, source on GitHub |
| requires | macOS 14 or later, Apple silicon or Intel |
| works offline | yes |
| data sent anywhere | none |
什么时候不能让 Mac 睡着
- 得在没人看着的时候跑完的下载或上传
- 你并不守在旁边的渲染、构建,或者一次长时间导出
- 演示的时候——当着一屋子人把屏幕调暗,是另一种折磨
- 在外接显示器上看片,笔记本的盖子是合着的
- 任何走 ssh 的活儿,机器一打盹它就断了
不让 Mac 睡着的那些免费办法
这不是一道收费对免费的题,装作是就不老实了。有好几个免费应用只干这一件事,而且干得不错,macOS 自己也带了一条命令。麻烦在于它们按住的东西并不一样,而人们正是卡在这些差别上。
你真正需要的是 caffeinate 的哪个参数
`caffeinate` 就在 /usr/bin/caffeinate,不用装。什么参数都不带地跑,它只挡住闲置休眠,别的都不管。`-d` 按住屏幕,`-i` 按住闲置休眠,`-m` 按住磁盘,`-s` 按住系统休眠——可 `-s` 只在接着电源时有效,用电池的时候它一声不响地什么也不做。
`-t` 收的是秒数,不是分钟;而且只要你顺手交给 caffeinate 一个程序去跑,它就被整个忽略。大多数人想要、却从来没找到的那个参数是 `-w <pid>`:它一直按住,直到那个 pid 的进程结束为止——对于一件事先并不知道要跑多久的活儿,这才是诚实的办法。
它们都做不到的一件事,是熬过合上的盖子。caffeinate 求的是 macOS 别自己打盹,而合上盖子并不算自己打盹。
那个没写进文档、又会赖着不走的 pmset 开关
还有一个开关,这个问题反复被问起正是因为它:`sudo pmset -a disablesleep 1`。它确实能在盖子合上、又没有外接显示器的时候让 Mac 醒着——而这正是 macOS 平时一口回绝的那种情况。
它同时在两头都没有文档。`man pmset` 里压根没有 `disablesleep` 这个词,而 `pmset -g` 把它按另一个名字打回来——`SleepDisabled`,在最上面那段「System-wide power settings」里。你写进去的和你读出来的拼法不一样,两个又都不在手册里。在 macOS 26.6.2 上验证过。
这不是某一个人读漏了。关于 pmset 最详尽的一篇公开梳理把设置项一条条走了一遍,同样没有列出这个参数(英文页面)。 The Eclectic Light Company — power management in detail
而且它赖着不走。重启之后它还在,只能手动用 `sudo pmset -a disablesleep 0` 撤掉。为一个晚上设上,然后忘掉,你的 Mac 就再也不睡了——包括它合着盖子待在包里的那些时间。
免费这条路要你付出什么
坐在桌前,一件跑一小时的活儿,`caffeinate -t 3600` 就够了。你菜单栏里已经有的那个免费的一键小应用也一样够。单就「让 Mac 不睡」这一项能力而言,这些和 hop 没有好坏之分,不值得为它换工具。
要付的代价在另外两处。第一处是你动手之前得先知道的那些事:哪个参数按住哪一种休眠、其中一个在电池上是死的、超时按秒计、这些没有一个管得了合上的盖子——而真管得了的那个开关又不在手册里。第二处是,免费这条路上没有任何东西自带一个结束。caffeinate 在窗口关掉或进程结束时停下;pmset 那个开关在你想起来的时候停下。它们谁都听不懂「按住两小时,然后放手」。
hop 这边是怎么做的
一次点击,不用密码,时长你挑:十五分钟、八小时,或者一直到你关掉为止。这期间屏幕可以亮着,也可以暗下去而机器照跑,菜单栏会告诉你现在是哪一种——于是在一次漫长的上传中途,「它还按着吗」这个问题根本不会冒出来。
时长在哪里设、合盖模式需要什么、图标怎么看——手册那一侧,中文的: 说明书里的防休眠
没有要翻的设置面板,事后也没有什么要撤销。你的节能设置一点没动:hop 开着的时候按住 Mac,不开的时候就让开。
重点就在那个时长,这和隔壁那个计时器是同一个想法:你说多久,它自己结束。 Mac 上的计时器
| 你在做什么 | 免费的办法 | 用 hop |
|---|---|---|
| 一个下载,而你就在桌前看着 | caffeinate -i,开着那扇终端窗口别关 | 用不上——用那条命令就行 |
| 一次总会结束的构建,而你没在看着 | caffeinate -w <pid>,前提是你知道 pid | 设八小时,然后走开 |
| 就按住二十分钟 | caffeinate -t 1200——是秒,不是分钟 | 在面板里挑时长 |
| 盖子必须合上,又没有外接显示器 | sudo pmset -a disablesleep 1,不手动撤就一直赖着 | 把合盖模式打开,它管的是同一种情况 |
| 做完了,想让 Mac 恢复正常 | 手动撤掉那个开关,否则它连重启都熬得过去 | 退出 hop,正常的休眠就回来了 |
盖子可以合着
macOS 只在自己的条件下合着盖子运行。Apple 把这些条件列了出来:Mac 接着电源、接着外接显示器,还要有外接键盘和鼠标或触控板。不满足这些条件,合上盖子就等于睡眠,正在跑的一切也跟着停(英文页面)。 Apple 支持 — 合盖使用外接显示器
防休眠开着,盖子就不再说了算。屏幕暗下去,机器照样干活:下载跑完,片子接着放,构建走到结束。
一句提醒。合着盖子还醒着的 Mac 照样发热,而合上的笔记本待在包里,热没地方去。让它在桌上醒着,别在背包里。
它醒着的这段时间机器在干什么——功耗、温度、这一夜花掉了多少电——在同一个面板里就看得到。 Mac 的系统监控
另外,一台醒着又没人看管的 Mac,是谁都能上去敲字的 Mac。 键盘锁定
它自己会把睡眠还回来
这一类应用出毛病的方式都一样:忘了关。一台永远不睡的 Mac 费电、发烫,迟早会让你吃一惊。
所以防休眠会自己结束:时长走完,或者你退出 hop。不会有什么状态留下来,活得比应用还久。
如果 Mac 在你没要求的时候睡下或醒来,先从 Apple 自己那份原因清单看起(英文页面)。 Apple 支持 — 如果 Mac 意外睡眠或唤醒
什么都不会被送去别处
hop 没有账户,没有配置档案,也没有遥测。让 Mac 醒着是一次本地的系统调用,这件事的任何部分都不会离开这台机器。
frequently asked questions
- 它是让屏幕一直亮着,还是只让 Mac 醒着?
- 你说了算。默认是 Mac 醒着而屏幕可以暗下去——盖子合上或者跑着长任务的时候,要的正是这个。想让屏幕也亮着,有一个「屏幕常亮」的开关。
- 合着盖子的时候 caffeinate 能让 Mac 醒着吗?
- 不能。caffeinate 求的是 macOS 别自己打盹,合上盖子是另一回事。不满足合盖运行的条件——接电源、接外接显示器、有外接键盘或鼠标——盖子一合 Mac 就睡,有没有 caffeinate 都一样。
- sudo pmset disablesleep 怎么撤销?
- `sudo pmset -a disablesleep 0`。用 `pmset -g` 查:它显示在最上面,名字是 SleepDisabled,而不是你设它时用的那个。它熬得过重启,不会自己消失。
- 它会改我的节能设置吗?
- 不会。「系统设置」里什么都没动。防休眠开着的时候 hop 按住 Mac,一关掉就立刻松手。
- 如果我忘了关会怎么样?
- 设一个时长,它自己会结束。退出 hop 也会马上把正常的休眠还回来。
- 电量低的时候 Mac 还会睡吗?
- macOS 自己的保护还在。防休眠请系统别因为闲置而睡,它不会盖过低电量时的行为。
- 真的免费吗?
- 完全免费。没有试用期,没有专业版,没有什么要解锁——另外十八件工具也一并给你。
other tools in hop
- color pickerany pixel on screen, in hex, rgb and hsl at once.
- file converterimages, video, audio and documents. offline, with the size shown up front.
- time trackerwhere the hours went, kept on this Mac and nowhere else.
关于作者

Anton Shakirov开发 hop
开发 hop,也编写本站的每一页。十九个工具收在一个菜单栏图标下,MIT 许可,源码公开。issue 和邮件都由他本人阅读和回复。