阻止 Mac 在运行任务时进入休眠状态

embedded/2025/3/29 6:18:08/

掌握Caffeinate命令:让您的 Mac 保持清醒以完成关键任务

开发人员经常发现自己在 Mac 上运行持续时间较长的进程。无论是大量文件上传、广泛的数据分析脚本,还是复杂的构建过程,我们最不希望的就是我们的机器在任务中途进入睡眠状态。输入 caffeinate 命令 – macOS 的内置解决方案,可在您最需要时保持系统唤醒。

睡眠困境

MacOS 在设计时考虑了电源效率,这对电池寿命非常有用,但在运行时间密集型任务时可能会出现问题。睡眠可能会中断工作的常见情况包括:

  • 将大文件上传到云存储
  • 运行冗长的数据处理脚本
  • 执行系统更新或备份
  • 执行长时间运行的构建流程

传统上,用户可能会求助于更改系统偏好设置或安装第三方应用程序来防止睡眠。但是,macOS 有一个强大的内置工具,许多开发人员都忽略了它:caffeinate 命令。

介绍 Caffeinate

此命令行实用程序位于 /usr/bin/caffeinate,可防止您的 Mac 进入睡眠状态。这是一个灵活的工具,可以以多种方式使用以满足不同的需求。

如何使用 Caffeinate

基本语法:

caffeinate [-disu] [-t timeout] [-w Process ID] [command arguments...]

常见选项包括:

  • -d:防止显示器进入休眠状态
  • -i:防止系统处于空闲休眠状态
  • -m:防止磁盘休眠
  • -s:使用交流电源时防止休眠
  • -u:声明用户活动
  • -t:指定超时(以秒为单位)
  • -w:等待指定的进程退出

Caffeinate 命令示例

基本用法

使用 caffeinate 的最简单方法是不带任何参数:

caffeinate

这将防止您的 Mac 在您终止命令(通常使用 Ctrl+C)之前休眠。

示例和用例

  1. 阻止睡眠特定持续时间:

    caffeinate -t 3600    

这将使您的 Mac 保持 1 小时(3600 秒)的唤醒状态。

  1. 防止显示器休眠:

    caffeinate -d    

对于演示或需要显示屏保持开启状态时很有用。

  1. 防止在长时间运行的命令期间出现空闲睡眠:

    caffeinate -i npm run build    

这会在运行构建过程时使系统保持唤醒状态。

  1. 使系统保持唤醒状态,直到特定进程完成:

    caffeinate -w $(pgrep long_running_process)    

等待指定的进程退出,然后才允许休眠。

  1. 组合多个标志:

    caffeinate -di -t 7200    

防止显示和空闲睡眠 2 小时。

  1. 防止在运行特定应用程序时进入睡眠状态:

    caffeinate -i /Applications/Firefox.app/Contents/MacOS/firefox    

在 Firefox 运行时保持系统唤醒。

  1. 声明用户 activity 以防止显示进入睡眠状态:

    caffeinate -u -t 300    

模拟用户活动 5 分钟,防止显示进入睡眠状态。

  1. 使用交流电源时防止所有类型的睡眠:

    caffeinate -dims    

结合了显示器、空闲、磁盘和系统睡眠预防。

  1. 为特定任务创建定时断言:

    caffeinate -i -t 1800 python3 long_script.py    

运行 Python 脚本,同时保持系统唤醒 30 分钟或直到脚本完成,以先到者为准。

高级使用技巧

  1. 与其他命令链接:

    (caffeinate -i && say "Task completed") & long_running_task    

这将使系统在长时间运行的任务期间保持唤醒状态并宣布完成。

  1. 为常见使用案例创建别名:

添加到您的 .bashrc 或 .zshrc 中:

    alias caff1h='caffeinate -i -t 3600'    

现在您只需键入 caff1h 即可让您的 Mac 保持清醒状态 1 小时。

  1. 与 nohup 一起用于后台进程:*

    nohup caffeinate -i long_running_script.sh &    

这将在后台运行脚本,使系统保持唤醒状态,并允许您关闭终端。

caffeinate的优点

  • 内置解决方案,无需第三方应用程序
  • 对睡眠行为的精细控制
  • 与其他命令行工具无缝集成
  • 无 GUI 开销,非常适合远程或无头设置

保持 Mac 清醒的其他方法

虽然caffeinate很强大,但还有其他方法可以管理睡眠行为:

  1. 系统偏好设置:在系统偏好设置中调整节能器设置。
  2. 第三方应用程序:Amphetamine 或 InsomniaX 等工具提供基于 GUI 的解决方案。
  3. 自定义脚本:创建将caffeinate用于常用场景的 shell 脚本。

版本注意事项

在 2012 年 7 月 25 日发布的 OS X Mountain Lion (10.8) 中,向 macOS 添加了 caffeinate 命令。caffeinate 命令在最近的 macOS 版本中保持一致。但是,请始终检查手册页 (man caffeinate) 以了解任何特定于版本的功能或更改。

仅在需要时使用

虽然让您的 Mac 保持清醒是必要的,但负责任地使用此功能很重要:

  • 仅在绝对必要时阻止睡眠
  • 注意能源消耗,尤其是电池供电
  • 让 Mac 在任务完成后进入睡眠状态,以保持系统健康

跨平台替代方案

对于在多操作系统环境中工作的用户:

  • Windows:使用 powercfg 命令或第三方工具,如 Caffeine for Windows。
  • Linux:使用 systemd 抑制或桌面环境特定的工具,例如 GNOME 的咖啡因

翻译自wompa.land


http://www.ppmy.cn/embedded/176480.html

相关文章

前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略

目录 前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动懒加载瀑布流模块及优化策略 一、前言 二、如何使用腾讯云免费满血版deepseek 1、腾讯云大模型知识引擎体验中心 2、体验deepseek联网助手 3、人机交互获取AI支持 三、基于DeepSeek实现无限滚动懒加载…

(C语言)静态通讯录(测试版)(C语言小项目)

1.首先是头文件: //头文件 //contact.h//防止头文件被重复包含 #pragma once //定义符号常亮,方便维护和修改 //联系人基本信息容量 #define NAME_MAX 20 #define AGE_MAX 5 #define SEX_MAX 5 #define TELE_MAX 15 #define ADDR_MAX 30 //联系人最大容量…

如何让Go 的regexp包支持 (?!...) 这样的 Perl 语法?

Go 的标准库 regexp 包基于 RE2 引擎,而 RE2 故意设计为不支持 Perl 风格的复杂特性(如 (?!...) 负向前瞻、后顾断言等),这是为了保证正则表达式的执行时间是线性的(O(n)),避免潜在的性能问题&…

AI日报 - 2025年3月25日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | Nebula(Google Gemini 2.0 Pro)破解复杂数学谜题 编码与推理能力再上新台阶 ▎💼 商业动向 | Sesame AI开源10亿参数语音模型CSM-1B 语音AI进入普惠时代 …

PTA 1105-链表合并(C++)

给定两个单链表𝐿1𝑎1→𝑎2→⋯→𝑎𝑛−1→𝑎𝑛L1​a1​→a2​→⋯→an−1​→an​和𝐿2𝑏1→𝑏2→⋯→𝑏𝑚−1→𝑏&#…

使用Python开发自动驾驶技术:车道线检测模型

友友们好! 我是Echo_Wish,我的的新专栏《Python进阶》以及《Python!实战!》正式启动啦!这是专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会…

深入理解Linux网络随笔(五):深度理解本机网络I/O

深入理解Linux网络随笔(五):深度理解本机网络I/O 文章目录 深入理解Linux网络随笔(五):深度理解本机网络I/O本机发送过程本机接收过程总结 分析本机网络I/O部分源码需要知道本机I/O是什么?扮演什…

大数据学习(77)-Hive详解

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…