Keepresso
Keepresso
使用 Keepresso

用 keepresso CLI 從命令列讓 Mac 保持喚醒

György
審核
György
更新於 Jul 23, 2026 2 min

Keepresso 內建一個小巧的命令列工具,讓你能從終端機、殼層指令碼、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                 # start an open-ended session
keepresso start --for 90        # start a 90 minute session
keepresso start --until 18:00   # run until a wall-clock time
keepresso stop                  # end the current session
keepresso toggle                # flip it on or off

因此一項長時間任務可以在開始時喚醒 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 時間戳記。

獨立保持喚醒,不必開應用程式

有時你完全不想動到應用程式,只想讓這一個殼層像 caffeinate 一樣讓 Mac 保持喚醒。在這個模式下,keepresso 處理程序本身持有電源斷言,一旦它結束,Mac 便可再次自由睡眠。

keepresso -i            # hold until you press Ctrl-C
keepresso -t 3600       # hold for a number of seconds
keepresso -w 5123       # hold until process 5123 exits
keepresso -d            # also keep the display awake (combine with the above)
keepresso -u            # declare user activity: wake the display now

最實用的模式,是把喚醒狀態綁在某個指令或殼層的生命週期上:

keepresso -w $$ &       # stay awake as long as this shell lives
ffmpeg -i in.mov out.mp4 & keepresso -w $!   # hold until the encode finishes

因為這些保持喚醒都是真正的 macOS 電源斷言,它們會出現在 pmset -g assertions 與 Keepresso 自己的活動面板裡,和其他讓 Mac 保持喚醒的應用程式並列。

自動化租約,給指令碼與智能體

只有 start 而沒有 stop,一旦指令碼當掉,就可能把 Mac 永遠釘在喚醒狀態。對於無人看管的自動化,改用租約:一份有時限的授權,擁有者必須持續續約。工具若掛掉,租約會到期,Mac 便可再次睡眠。

ID=$(uuidgen)
keepresso lease acquire --id "$ID" --tool my-script --task "nightly render" --ttl 600
keepresso lease heartbeat --id "$ID"   # renew before half the TTL elapses, on a loop
keepresso lease release --id "$ID"     # done, let the Mac rest
keepresso lease list --json            # every live lease, machine-readable

運作中的租約會以倒數計時顯示在選單裡,Keepresso 會將它們聯集起來,還有一個心跳永遠無法延長的最長存活時間(上限為 7 天)。完整協定、MCP 伺服器與一鍵安裝的智能體技能,見讓 AI 智能體保持你的 Mac 喚醒

喚醒排程

CLI 也能讀取系統的排程喚醒,並在你允許的情況下修改它們:

keepresso wake status                          # read the schedule, always allowed
keepresso wake set --at "2026-07-24 07:30"     # one-shot wake
keepresso wake set --repeat MTWRF --time 07:30 # repeating wake
keepresso wake clear

status 對任何人都能用。setclear 會透過管理員輔助程式套用系統層級變更,因此只有在 偏好設定、自動化 下的 允許自動化修改喚醒排程 開啟時才能運作。它預設為關閉。

相關

取得 Keepresso

免費開源,支援 macOS 14 以上版本。安裝它,讓 Mac 照你的方式保持喚醒。

更多「使用 Keepresso」內容