Keepresso
Keepresso
使用 Keepresso

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

更新於 Jul 6, 2026 1 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                 # 啟動一個不限時的工作階段
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 時間戳記。

獨立保持喚醒,不需要應用程式

有時你根本不想牽涉到應用程式,只想要這個殼層本身讓 Mac 保持喚醒,就跟 caffeinate 一模一樣。在這個模式下,keepresso 處理程序本身會持有電源斷言,一旦它結束,Mac 就能立刻再度睡眠。

keepresso -i            # 保持喚醒直到你按下 Ctrl-C
keepresso -t 3600       # 保持喚醒指定的秒數
keepresso -w 5123       # 保持喚醒直到處理程序 5123 結束
keepresso -d            # 同時讓顯示器保持喚醒(可與上面的選項合併使用)
keepresso -u            # 宣告使用者活動:立即喚醒顯示器

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

keepresso -w $$ &       # 只要這個殼層存在,就保持喚醒
ffmpeg -i in.mov out.mp4 && keepresso stop

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

相關文章

取得 Keepresso

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