Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

停止创建定时任务!

Posted on 2026-02-09
壳文本壳文本

Cron 是为始终在线的 Unix 服务器而设计的

在我职业生涯的早期,我常常会因为那些老手们总是用“只要创建一个定时任务就行了”来搪塞每一个自动化问题而感到恼火。

Cron 的历史可以追溯到 Unix 的早期。它简单、实用但可靠:每分钟检查一次文本文件,如果文件中的某一行与当前时间匹配,则运行相应的命令。和大多数 Unix 工具一样,它非常好用——前提是你要先学会它那晦涩难懂的调度语法。

例如:

 0 3 * * * /Users/amerpie/scripts/backup.sh  

对于 cron 任务来说,这意味着:每天凌晨 3 点运行此脚本。

Cron 是为服务器机房中的机器设计的——这些机器 24/7 全天候运行,连接到稳定的网络,并且很少进入睡眠状态。

macOS 笔记本电脑……并非如此。

核心问题在于 cron 完全不具备情境感知能力。它既不知道也不关心:

  • 您已登录
  • 网络可用
  • 笔记本电脑处于睡眠状态
  • macOS 自 1993 年以来没有任何改变。
  • 现代功能,例如沙盒、节能模式或系统完整性保护,都已存在。

Cron 只会按计划运行。如果你的 Mac 在凌晨 3 点处于睡眠状态,那就没办法了。这种限制使得 Cron 并不适合大多数实际的 Mac 自动化场景。

这就是我们推出的原因

20 多年前,苹果在 OS X 10.4 (Tiger) 中引入了launchd ,以取代 cron 和一大堆其他遗留服务。

与 cron 不同,launchd 真正理解现代 Mac 环境。它可以处理:

  • 启动和停止应用程序
  • 运行后台任务
  • 调度作业
  • 管理守护进程
  • 响应系统事件

最重要的是,launchd 的功能并不局限于“此时运行”。它可以根据状态和上下文触发任务,包括:

  • 具体时间或时间间隔
  • 系统启动
  • 用户登录
  • 文件或文件夹更改
  • 网络可用性
  • 硬件事件
  • 按需条件

换句话说,launchd 是为 Mac 实际所处的混乱、移动化、电源管理的世界而设计的。

但有一个很大的问题。

创建 launchd 任务并非只需一行简单的文本。相反,你需要编写 XML 属性列表文件——这些文件冗长、要求苛刻、容易出错,并且充满了你必须理解的晦涩难懂的键值。

对于大多数理智的人来说,这绝对是不可取的。

让这一切变得轻松便捷的实用第三方应用程序

幸运的是,现在已经是 2026 年了,没有人再需要手动编写 launchd XML 文件了。许多优秀的 Mac 应用都提供了友好的界面,可以用来构建 launchd 作业或类似的定时任务。

Lingon Pro

Lingon 已经存在超过二十年了,它仍然是最好的 launchd 工具之一。

它提供了一个简洁的图形用户界面,用于创建可运行的复杂作业:

  • 无论您的 Mac 处于唤醒状态还是睡眠状态
  • 无论你是否登录
  • 必要时需具备 root 权限
  • 使用“保持活动”规则自动重启崩溃的进程

如果你需要在 macOS 上实现严肃、可靠的后台自动化,Lingon Pro 是黄金标准。

价格:一次性支付 23.99 美元,或每年订阅 11.99 美元

试用: LaunchD 任务调度器完整功能一周试用版

这是 Lingon Pro 的一个更简单、更便宜的替代品。它的深度不如 Lingon Pro,但对许多用户来说已经足够了。

主要特点:

  • 创建、编辑和删除 launchd 任务
  • 按时间间隔或计划(每日、每周、每月)运行作业
  • 根据事件触发任务,例如:
    • 体积安装
    • 用户登录
    • 文件夹更改
  • 保持任务运行,并在崩溃时自动重启

如果您想要基本的 launchd 自动化功能而无需学习成本,那么这款售价 4.99 美元的应用程序物超所值。

键盘大师

Keyboard Maestro 主要不是一款日程安排工具,但它确实包含了强大的基于时间和基于事件的触发器。

部分可用触发器:

  • 快捷键
  • 应用启动/退出/激活/停用
  • 窗口事件
  • 剪贴板更改
  • 具体时间或时间间隔
  • 类型化字符串
  • USB 设备事件
  • 公共网站网址
  • MIDI 输入
  • 设备连接/断开
  • 登录
  • 网络变化

缺点:Keyboard Maestro 仅在以下情况下有效:

  • 您已登录
  • Mac 已唤醒
  • 键盘大师引擎正在运行

所以它并不能替代 launchd。但对于用户级自动化来说,它的功能非常强大。

例如,我有一个宏,它会定期检查 Raycast、Hazel、Stream Deck 和 BetterTouchTool 是否正在运行,如果未运行则重新启动它们。这正是 Keyboard Maestro 擅长的实用自动化功能。

苹果快捷指令

macOS 上的快捷指令功能已经非常成熟,尤其是在 macOS Tahoe 之后。它现在支持基于时间的自动化操作,类似于 iOS 用户多年来一直享有的功能。

但它也存在一些重要的局限性:

  • 您必须登录。
  • Mac 必须处于唤醒状态
  • 它更适合工作流程,而不是真正的后台服务。

不过,快捷指令仍然可以根据以下条件触发操作:

  • 特定应用程序
  • 电源状况
  • 硬件连接
  • 网络变化
  • 文件系统事件
  • 蓝牙设备
  • 一天中的时间

如果你使用的是始终开机的 Mac mini 或 Mac Studio,快捷指令的功能会出乎意料地强大。但在处于睡眠状态的笔记本电脑上,它的功能就没那么强大了。

更多具有基于时间或事件触发器的应用

如果您只需要“按计划运行此程序”而无需深入了解 launchd,那么以下这些值得一看:

  • Task Till Dawn——一款免费的自动化工具,用于文件管理、打印和浏览器任务管理。
  • Alarm Clock Pro——远不止是一个闹钟;非常适合定时启动应用程序和运行脚本。
  • Shortery——为 Apple Shortcuts 添加真实触发器(Wi-Fi、日历、时间等)
  • Mac 版调度器— 轻量级应用程序和脚本调度器
  • Automator + 日历提醒——macOS 内置技巧:创建一个 Automator 工作流程,然后让日历在特定时间打开它。
  • Launch Control——一款高端的 launchd 图形用户界面,类似于 Lingon Pro,但价格更高。

结论

如果你要自动化一台真正的 Mac(而不是一台无头服务器),那么 cron 通常是不合适的工具。

对于任何需要在后台可靠运行的程序,请使用launchd 。除非您真的喜欢手动编辑 XML,否则请使用 Lingon Pro 或 LaunchD Task Scheduler 等图形界面工具进行管理。

对于用户在工作时需要进行的用户级自动化操作,Keyboard Maestro 和 Shortcuts 非常棒。

选择合适的工具,你的自动化程序才能在你需要的时候真正发挥作用,而不是在凌晨 3 点,当你的 Mac 安然地躺在床头柜上时悄无声息地失效。

✉️ 通过电子邮件回复

原文: https://amerpie.lol/2026/02/08/stop-making-cron-jobs.html

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Alin Panaitiu
  • Anil Dash
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Big Technology
  • Bits about Money
  • Brandon Skerritt
  • Brent Simmons
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • HeardThat Blog
  • Henrique Dias
  • Herman Martinus
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Li Haoyi
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Maggie Appleton
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mind Matters
  • Mostly metrics
  • Naval Ravikant
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • PostHog
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Slava Akhmechet
  • Small Good Things
  • Steph Ango
  • Stephen Wolfram
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2026 搞英语 → 看世界 | Design: Newspaperly WordPress Theme