donotsleep:让电脑保持清醒的小工具
这是一个跨平台的命令行工具,简单实用,解
决"电脑自动休眠"的痛点。
donotsleep 是一款跨平台 CLI 工具,核心功能只有一个:阻止系统进入休眠状态。
项目地址:https://github.com/everettjf/donotsleep
为什么需要它?
相信很多人都遇到过这些场景:
• Vibe coding时,离开一会儿回来发现电脑休眠了
• 远程办公 时,SSH 连接因为系统休眠而断开
• 长时间编译/渲染 任务,半夜被系统休眠打断
• 演示/投屏 时,屏幕突然熄灭影响体验
macOS 有 caffeinate,Linux 有 systemd-inhibit,Windows 有电源设置——但每个平台命令不同,记忆成本高。donotsleep 把这些封装成统一的命令,一行代码搞定。
安装方式
支持多种安装渠道,任君选择:
macOS (Homebrew)
brew update && brew install everettjf/tap/donotsleep
通用安装脚本
curl -fsSL https://raw.githubusercontent.com/everettjf/donotsleep/main/scripts/install.sh | bash
Rust 用户
cargo install donotsleep
Windows (winget)
winget install everettjf.donotsleep
使用示例
保持清醒直到手动停止 (Ctrl+C)
donotsleep
保持清醒 30 分钟
donotsleep 30 minutes
保持清醒 2 小时
donotsleep 2h
保持清醒 1.5 小时
donotsleep 1.5h
保持清醒 10 秒 (测试用)
donotsleep 10s
时间格式很灵活:
• 完整写法:2 hours、30 minutes
• 简写:90m、1.5h、10s
• 甚至支持 typo:miniutes 也能识别(作者很贴心)
跨平台实现原理
| 平台 | 底层机制 |
|---|---|
| macOS | 封装 caffeinate -dimsu |
| Linux | 封装 systemd-inhibit |
| Windows | 调用 Win32 SetThreadExecutionState |
原理简单,但胜在统一接口,不用记三个平台的命令。
实际输出示例
[2026-03-06 16:17:39 -0800] donotsleep started. Keep awake for 1s.
[2026-03-06 16:17:41 -0800] donotsleep finished. Time reached (1s).
日志清晰,开始和结束都有时间戳,方便排查问题。
技术栈
• 语言:Rust
• 许可证:MIT
• 发布渠道:GitHub Releases、crates.io、Homebrew、winget
总结
donotsleep 是一个小而美的工具,解决了一个具体而常见的问题。它的设计哲学很清晰:
Do one thing, and do it well.
如果你经常被系统休眠困扰,不妨试试这个工具。安装简单,用法直观,跨平台一致——这才是命令行工具该有的样子。