Keepresso
Keepresso
使用 Keepresso

用 keepresso CLI 从命令行让 Mac 保持唤醒

更新于 Jul 6, 2026 1 min

Keepresso 附带一个小巧的命令行工具,让你可以从终端、shell 脚本、Makefile 或 CI 任务里控制它,不需要伸手去点菜单栏。命令名是 keepresso,它有两种工作方式:可以和菜单栏应用通信,也可以像内置的 caffeinate 一样自己独立让 Mac 保持唤醒。

安装这个命令

如果你是用 Homebrew 安装的 Keepresso,keepresso 命令已经在你的 PATH 里了,不需要做任何事:

brew install --cask gyorgysh/keepresso/keepresso

如果你是从 DMG 安装的应用,这个工具就在应用包内部,你的 PATH 还不知道它的存在。手动链接一次:

sudo ln -s /Applications/Keepresso.app/Contents/Helpers/keepresso /usr/local/bin/keepresso

确认它已经接好:

keepresso version

控制应用

这些命令会发送给 Keepresso 应用,如果它还没运行会自动启动它。它们是菜单功能的可脚本化版本。

keepresso start                 # 启动一个不限时长的会话
keepresso start --for 90        # 启动一个 90 分钟的会话
keepresso start --until 18:00   # 运行到指定的时间点
keepresso stop                  # 结束当前会话
keepresso toggle                # 开启或关闭

这样,一个长时间任务就能在开始时唤醒 Mac,结束时再让它睡眠:

keepresso start
make release
keepresso stop

读取状态

keepresso status 会告诉你当前是否有会话正在运行,它的退出码也方便在脚本里做判断分支:

  • 0 表示 Mac 正被保持唤醒
  • 1 表示没有
  • 2 表示应用没有运行
keepresso status && echo "awake" || echo "asleep"

加上 --json 可以得到机器可读的结果:

keepresso status --json

同样的会话状态也会被镜像写入一个文件,这样菜单栏工具、状态栏,或者小组件都可以在不启动任何东西的情况下读取它:

~/Library/Application Support/Keepresso/status.json

它包含当前状态以及 ISO 8601 格式的时间戳。

独立保持唤醒,不需要应用

有时候你根本不想牵扯到应用,只是想让这一个 shell 会话让 Mac 保持唤醒,就像 caffeinate 那样。在这种模式下,keepresso 进程本身持有电源断言,它一退出 Mac 就可以重新睡眠。

keepresso -i            # 保持唤醒,直到你按下 Ctrl-C
keepresso -t 3600       # 保持唤醒指定的秒数
keepresso -w 5123       # 保持唤醒,直到进程 5123 退出
keepresso -d            # 同时让显示器保持唤醒(可与上面的选项组合使用)
keepresso -u            # 声明用户活动:立即唤醒显示器

最实用的用法是把保持唤醒和某个命令或 shell 的生命周期绑在一起:

keepresso -w $$ &       # 只要这个 shell 还活着就保持唤醒
ffmpeg -i in.mov out.mp4 && keepresso stop

因为这些保持唤醒的行为都是真实的 macOS 电源断言,它们会出现在 pmset -g assertions 的输出中,也会出现在 Keepresso 自己的活动面板里,和其他任何让 Mac 保持唤醒的应用并列显示。

相关内容

获取 Keepresso

免费开源,支持 macOS 14 及以上版本。安装它,按你的方式让 Mac 保持唤醒。