当前位置: 首页 > article >正文

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

掌握`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.  **系统偏好设置**:在系统偏好设置中调整节能器设置。
1.  **第三方应用程序**:Amphetamine 或 InsomniaX 等工具提供基于 GUI 的解决方案。
1.  **自定义脚本**:创建将`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](https://wompa.land/articles/keep-your-mac-awake)

相关文章:

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

掌握Caffeinate命令:让您的 Mac 保持清醒以完成关键任务 开发人员经常发现自己在 Mac 上运行持续时间较长的进程。无论是大量文件上传、广泛的数据分析脚本,还是复杂的构建过程,我们最不希望的就是我们的机器在任务中途进入睡眠状态。输入 c…...

Copilot提示词库用法:调整自己想要的,记住常用的,分享该共用的

不论你是 Microsoft 365 Copilot 的新用户还是熟练运用的老鸟,不论你是使用copilot chat,还是在office365中使用copilot,copilot提示词库都将帮助你充分使用copilot这一划时代的产品。它不仅可以帮助你记住日常工作中常用的prompt提示词&…...

Python实战(3)-数据库操作

前面说过,可用的SQL数据库引擎有很多,它们都有相应的Python模块。这些数据库引擎大都作为服务器程序运行,连安装都需要有管理员权限。为降低Python DB API的使用门槛,我选择了一个名为SQLite的小型数据库引擎。它不需要作为独立的…...

LeetCode 160 Intersection Of Two Linked Lists 相交链表 Java

题目:找到两个相交列表的起始点,如图c1开始为A和B两个链表的相交点 举例1:8为两个链表的相交点。 注意:相交不止是数值上的相同。 举例2:2为相交点 举例3:没有相交点 解题思路: 相交证明最后一…...

AI Agent中的MCP详解

一、协议定义与核心价值 MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司于2024年11月推出的开放标准协议,其核心目标是通过建立统一接口规范,解决AI模型与外部系统集成效率低下的行业痛点。该协议通过标准化通信机制,使大型语言模型(LLM)能够无缝对接数…...

win系统上自动化安装配置WSL linux和各种生信工具教程

windows系统上自动化安装配置WSL linux系统和各种生信工具教程 高通量测序原始数据的上游分析模块介绍 我开发的OmicsTools软件的这些分析测序原始数据的上游处理分析模块需要使用到linux和linux系统中的一些生信工具,在这里我开发了在windows系统中自动化安装WSL …...

统计可重复列表中的TOP N

文章目录 方案1:HashMap统计 全排序实现步骤:代码实现:优缺点: 方案2:HashMap统计 最小堆(优先队列)实现步骤:代码实现:优缺点: 方案3:Java Str…...

PowerBI纯小白如何驾驭DAX公式一键生成:copilot for fabric

在2025年2月份更新中,powerbi desktop里的copilot功能还新增了一个非常强大的功能:一键生成多个度量值,并直接加载到模型。 直接上示例展示: 打开DAX查询视图,在copilot窗格中直接输入想要生成多个度量值&#xff0c…...

Pytest的夹具

1、pytest的前置后置夹具 fixture 有些内容是在每个用例执行之前都要运行操作:-- 用例前置 接口:购物车模块先登录 --登录结果 【token鉴权】 UI: 每次用例 打开浏览器 --driver 有些内容在每个用例之后都要运行操作:–用例后置 接口: 数据清除 UI:关闭浏览器 叫做用例的…...

两市总的净流出和净流入来分析情况

为了排查数据干扰,只从两市总的净流出和净流入来分析情况。 净流出才对应资金抽离:若净流入为负(即净流出),则意味着资金从股市中撤出,例如主动卖出的金额超过主动买入金额。净流入反映市场信心&#xff1…...

GitHub在push推送到远程仓库的时候显示Logon failed登录失败

具体问题描述 git.exe push --progress "origin" master:master Logon failed, use ctrlc to cancel basic credential prompt. remote: Support for password authentication was removed on August 13, 2021. 这是因为Git 推送失败的原因是 GitHub 已经不支持密码认…...

如何在SQL中高效使用聚合函数、日期函数和字符串函数:实用技巧与案例解析

文章目录 聚合函数group by子句的使用实战OJ日期函数字符串函数数学函数其它函数 聚合函数 函数说明COUNT([DISTINCT] expr)返回查询到的数据的 数量SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义AVG([DISTINCT] expr)返回查询到的数据的 平均值&…...

AutoGen :使用 Swarm 构建自治型多智能体团队

👉👉👉本人承接各类AI相关应用开发项目(包括但不限于大模型微调、RAG、AI智能体、NLP、机器学习算法、运筹优化算法、数据分析EDA等) !!!👉👉👉 有意愿请私信!!!AutoGen 的 AgentChat 模块提供了一种强大的方法来构建多智能体协作系统。 在之前的文章中,我们探讨了…...

RK3568平台设备树文件功能解析(鸿蒙系统篇)

鸿蒙设备树驱动修改时候发现目录下有很多的rk3568 的设备树,由于对这些设备树功能不太熟悉,所以索性就整理一下不同设备树的功能 rk3568-evb1-ddr4-v10.dts rk3568-evb4-lp3-v10.dts rk3568-evb6-ddr3-v10-rk628-rgb2hdmi.dts …...

k8s-coredns-CrashLoopBackOff 工作不正常

本文作者: slience_me 问题描述 # 问题描述 # rootk8s-node1:/home/slienceme# kubectl get pods --all-namespaces # NAMESPACE NAME READY STATUS RESTARTS AGE # kube-flannel kube-flannel-ds-66bcs …...

【Android性能】Systrace分析

1,分析工具 1,Systrace新UI网站 Perfetto UI 2,Systrace抓取 可通过android sdk中自带的systrace抓取,路径一般如下,..\AppData\Local\Android\Sdk\platform-tools, 另外需要安装python2.7,…...

Unity导出WebGL,无法显示中文

问题:中文无法显示 默认字体无法显示中文 在编辑器中设置了中文和英文的按钮,中文按钮无法显示 导出后无法显示中文 解决办法: 自己添加字体,导入项目,并引用 示例 下载一个字体文件,这里使用的阿里…...

oracle事务的组成

1)数据库事务由以下的部分组成: 一个或多个DML 语句 ; 一个 DDL(Data Definition Language – 数据定义语言) 语句; 一个 DCL(Data Control Language – 数据控制语言)语句; 2)事务的执行开始: 以第一个 DML 语句的执行作为开始 ,…...

【如何在OpenWebUI中使用FLUX绘画:基于硅基流动免费API的完整指南】

如何在OpenWebUI中使用FLUX绘画:基于硅基流动免费API的完整指南 注册并获取硅基流动秘钥OpenWebUI中使用函数配置自定义模型-提示词配置效果验证 ) FLUX绘画是一种强大的AI绘图工具,本文将详细介绍如何在OpenWebUI中集成并使用FLUX绘画功能,…...

QT 磁盘文件 教程04-创建目录、删除目录、遍历目录

【1】新建目录 bool CreateDir(QString name){QString fileName name ;QDir dir(fileName);if (dir.isEmpty()) {dir.mkdir(fileName);return true;}else{qDebug()<<"文件夹已存在";return false;} } 【2】删除目录 bool DeleteDir(QString fileName){if (…...

Event driven agentic document workflows 笔记 - 2

代理文档工作流&#xff08;ADW&#xff09;- 课程笔记 Agentic Document Workflows (ADW) 1. 课程目标 介绍 代理文档工作流&#xff08;ADW&#xff09; 背后的核心概念&#xff0c;包括&#xff1a; RAG&#xff08;检索增强生成&#xff09;代理工作流 探讨如何利用 事件…...

Facebook 如何影响元宇宙的发展趋势

Facebook 如何影响元宇宙的发展趋势 引言 元宇宙&#xff08;Metaverse&#xff09;这个概念&#xff0c;曾经只存在于科幻小说中&#xff0c;如今正逐渐成为现实。它是一个由多个 3D 虚拟世界组成的网络&#xff0c;用户可以在其中进行社交、游戏、工作等活动。Facebook&…...

1.5.7 掌握Scala内建控制结构 - 变量作用域

本次实战深入理解了Scala中变量作用域的概念&#xff0c;通过两个任务演示了作用域的基本规则。在任务1中&#xff0c;我们创建了一个名为ScopeDemo01的对象&#xff0c;展示了内部作用域能够访问外部作用域的变量。通过在if语句块中访问在外部定义的message变量&#xff0c;我…...

RAID磁盘阵列管理

一. 什么是RAID RAID是英文Redundant Array of Independent Disks的缩写&#xff0c;中文翻译过来就是“独立冗余磁盘阵列”。简单的说&#xff0c;RAID是一种把多块独立的硬盘&#xff08;物理硬盘&#xff09;按不同的方式组合起来形成一个硬盘组&#xff08;逻辑硬盘&#…...

利用ffmpeg库实现音频AAC编解码

AAC‌&#xff08;Advanced Audio Coding&#xff09;是一种音频编码技术&#xff0c;出现于1997年&#xff0c;基于MPEG-2的音频编码技术。AAC具有高效的数据压缩能力和较高的音质&#xff0c;适用于各种音频应用场景。例如&#xff0c;在智能设备中&#xff0c;AAC技术被广泛…...

微博ip属地不发微博会不会变

随着社交媒体的普及&#xff0c;微博作为其中的佼佼者&#xff0c;一直备受关注。而且微博上线了显示用户IP属地的功能&#xff0c;这一功能旨在减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为&#xff0c;确保传播内容的真实性和透明度。然而&#xff0c;这也引发了一些…...

appium之Toast元素识别

Appium之Toast元素识别教程与实例 一、Toast简介 Toast是Android系统中的轻量级消息提示框&#xff0c;以浮动形式短暂显示&#xff08;通常2-3秒&#xff09;&#xff0c;无法被点击且不会获取焦点。常见于登录失败、操作提示等场景&#xff0c;如“密码错误”或“网络异常”。…...

「JavaScript深入」WebSocket:高效的双向实时通信技术

WebSocket WebSocket 的特点1. 全双工通信2. 持久连接3. 低延迟4. 二进制和文本支持5. 连接管理6. 二进制数据传输 WebSocket 协议详解1. 握手过程2. 数据帧结构 WebSocket 的实现服务器端实现&#xff08;Node.js ws库&#xff09;1. 基础服务器2. 广播功能实现3. 心跳机制客…...

C#从入门到精通(1)

目录 第一章 C#与VS介绍 第二章 第一个C#程序 &#xff08;1&#xff09;C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 &#xff08;2&#xff09;程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…...

配置阿里云yum源

配置阿里云yum源 修改默认的yum仓库&#xff0c;把原有的移动到创建的目录里&#xff08;踢出国外的yum源&#xff09; # 切换到/ect/yum.repos.d/目录下 cd /etc/yum.repos.d/ # 新建repo目录 mkdir repo # 把原有的移动到创建的目录里 mv ./*.repo ./repo/配置yum源 # 找到…...