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

news/2025/3/25 10:12:09/

掌握`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)


http://www.ppmy.cn/news/1582447.html

相关文章

Qt/C++项目积累:4.远程升级工具 - 4.1 项目设想

背景: 桌面程序一般都支持远程升级,也是比较常用的场景设计。如酷狗音乐的升级,会提供两个选项,自动帮助安装或是新版本提醒,由用户来决定是否升级,都属于远程升级的应用及策略。 看看经过这块的功能了解及…

【和春笋一起学C++】文本文件I/O

在windows系统中读取键盘的输入和在屏幕上显示输出统称为:控制台输入/输出。把读取文本文件和把字符输出到文本文件中统称为:文本文件I/O。 目录 1. 输出文本文件 2. 读取文本文件 1. 输出文本文件 把字符输出到文本文件中和输出到控制台很相似&#x…

豪越科技消防一体化:数字中国智慧应急的关键支撑

在数字中国建设加速推进的当下,国家数据局对 2025 数字中国任务的部署,为各领域数字化转型指明了方向。其中,智慧应急作为保障城市安全运行的重要环节,备受关注。豪越科技消防一体化安全管控解决方案,凭借其先进的理念…

蓝桥杯备赛 背包问题

背包问题 ![[背包问题.png]] 01背包 1.题意概要:有 n n n个物品和一个容量为 V V V的背包,每个物品有重量 w i w_i wi​和价值 v i v_i vi​ 两种属性,要求选若干物品放入背包使背包中物品的总价值最大且背包中物品的总重量不超过背包的容…

PostgreSQL_数据使用与日数据分享

目录 前置: 1 使用 1.1 获取前复权因子 1.2 查询股票的纵向数据 1.3 查询股票的横向数据 2 日数据分享(截止至:2025-03-21) 总结 前置: 本博文是一个系列。在本人“数据库专栏”-》“PostgreSQL_”开头的博文。…

DeepSeek处理多模态数据的技术要点和实现方式

DeepSeek具备处理多模态数据的能力,以下是相关技术要点和实现方式。 1. ‌多模态模型架构‌ ‌单流/双流网络‌:通过将文本和图像输入统一编码器(单流)或分别编码后交互(双流)实现模态融合‌。‌预训练模…

Java的流程控制

一、三种执行顺序 顺序结构、分支结构(if、switch)、循环结构(for、while、do-while) 二、分支结构 (一)if分支的三种形式(根据条件真假来执行某段代码) 1.只有if package xixi;…

再探C语言(1)

温馨提示: 学C语言就像玩《掘地求升》——你以为懂了语法就能通关? 不!编译器会用铁锤教你做人!(╯‵□′)╯︵┻━┻ 🐱Part 1:sizeofの跨平台迷惑行为 Q1. 不同环境下sizeof(int)的结果 运行环境结果&a…