你是否遇到过这样的窘境:灵感迸发正在“Vibe coding”时,起身接杯水的功夫,回来却发现电脑屏幕已经熄灭,编辑器也进入了休眠状态?或者在进行一项长时间的编译任务时,半夜被系统的自动休眠无情打断?
这些由系统自动休眠或锁屏引发的小麻烦,相信不少开发者都深有体会。无论是远程办公时SSH连接意外断开,还是在重要演示、投屏过程中屏幕突然熄灭,都相当影响效率和体验。虽然各个操作系统都有原生方案来阻止休眠,比如macOS的 caffeinate、Linux的 systemd-inhibit 以及Windows的电源设置,但它们的命令各异,记忆和使用起来并不方便。
今天要介绍的这个名为 donotsleep 的小工具,正是为了解决这个痛点而生。它是一个使用 Rust 编写的跨平台命令行工具,核心功能纯粹而强大:用一行统一的命令,阻止你的电脑进入休眠状态。对于经常需要处理此类问题的开发者而言,这无疑是一个能提升幸福感的小利器。你可以在 云栈社区 的运维工具讨论区找到更多类似的效率工具分享。
项目简介与安装
donotsleep 是一个开源项目,代码托管在 GitHub,遵循 MIT 许可证。它的设计哲学非常清晰:Do one thing, and do it well. 只做好“保持系统清醒”这一件事。
安装方式非常灵活,支持多种包管理器,总有一款适合你:
macOS (Homebrew)
如果你使用的是 macOS 并安装了 Homebrew,安装命令非常简单:
brew update && brew install everettjf/tap/donotsleep
通用安装脚本
对于其他 Unix-like 系统,可以使用官方提供的安装脚本:
curl -fsSL https://raw.githubusercontent.com/everettjf/donotsleep/main/scripts/install.sh | bash
Rust 用户
如果你是 Rust 开发者,可以直接通过 Cargo 进行安装:
cargo install donotsleep
Windows (winget)
Windows 用户可以通过 winget 包管理器来安装:
winget install everettjf.donotsleep
使用示例:简单直观
安装完成后,你就可以在终端里使用 donotsleep 命令了。它的使用方式极其直观,支持灵活的时间参数。
基础用法:保持清醒直到手动停止
直接运行命令,程序会持续运行并阻止休眠,直到你按下 Ctrl+C 来终止它。
donotsleep
定时模式:保持清醒指定时长
你可以在命令后加上时间参数,让工具在指定时间后自动退出。
- 保持清醒 30 分钟:
donotsleep 30 minutes
- 保持清醒 2 小时(支持简写):
donotsleep 2h
- 保持清醒 1.5 小时:
donotsleep 1.5h
- 甚至可以进行短暂测试(保持10秒):
donotsleep 10s
时间格式非常人性化,既支持 2 hours、30 minutes 这样的完整写法,也支持 90m、10s 这样的简写。值得一提的是,作者还贴心地对常见拼写错误(如 miniutes)做了兼容处理。
跨平台实现原理
donotsleep 的魅力在于它提供了一个统一的命令行接口,而底层则是分别调用了各平台的原生API。对于想要深入了解其背后机制的开发者,这涉及到不同操作系统的电源管理知识。如果你对系统底层或 Rust 的跨平台调用感兴趣,可以深入研究其源码。
| 平台 |
底层机制 |
| macOS |
封装 caffeinate -dimsu 命令 |
| Linux |
封装 systemd-inhibit 命令 |
| Windows |
调用 Win32 API SetThreadExecutionState |
原理并不复杂,但将三个平台的不同实现封装成一个简单命令,这正是工具的价值所在——降低用户的记忆和使用成本。
实际运行效果
运行命令后,你会在终端看到清晰的日志输出,便于确认工具状态和排查问题。例如,执行 donotsleep 1s 进行测试时,会看到类似下面的输出:
[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).
日志包含了精确的时间戳,明确告知你任务开始和结束的时间。
总结
donotsleep 是一个典型的小而美的工具。它瞄准了“系统自动休眠”这个具体而常见的痛点,并用一种极其优雅的方式解决了它:安装简单、用法直观、跨平台行为一致。这正是一个优秀的命令行工具应有的样子。
其技术栈也相当纯粹,基于高性能且安全的 Rust 语言开发,并通过 GitHub Releases、crates.io、Homebrew、winget 等多个渠道发布,确保了用户获取的便利性。这类解决特定场景问题的 开源实战 项目,非常值得在开发者社区中分享和传播。
如果你也经常被不合时宜的系统休眠所困扰,不妨试试 donotsleep。一行命令,换来持续的清醒与高效。