架构技术评论

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.

如果你经常被系统休眠困扰,不妨试试这个工具。安装简单,用法直观,跨平台一致——这才是命令行工具该有的样子。