《crontab/launchctl 定时任务(macOS)》
macOS 的 cron 目录、文件格式与 Linux 大体一致,但服务由 launchd 托管。本文记录在 Mac 上配置 crontab 定时任务的完整步骤与常见坑。
1 检查 cron 服务与 plist
# 确认 cron 的 launchd plist 存在
locate com.vix.cron
# /System/Library/LaunchDaemons/com.vix.cron.plist
# 确认 cron 服务在运行
sudo /usr/sbin/cron status
# cron: cron already running, pid: 44190
# 若未加载,手动加载
sudo launchctl load -w /System/Library/LaunchDaemons/com.vix.cron.plist
2 编写定时任务
# 确保 /etc/crontab 存在
sudo touch /etc/crontab
# 编辑当前用户任务(同 Linux)
crontab -e
# 示例:每天早上 10 点执行脚本
0 10 * * * /Users/<username>/work/auto-sync.sh
编辑格式:
分 时 日 月 星期 命令,与 Linux 一致。默认编辑器可通过export VISUAL=vim调整。
3 验证任务写入
sudo ls /usr/lib/cron/tabs
sudo cat /usr/lib/cron/tabs/<username>
0 10 * * * /Users/<username>/work/auto-sync.sh
任务对应的文件在 /usr/lib/cron/tabs/<username>。
4 常见问题
- mac 上 cron 任务需要保证脚本有执行权限并打印环境变量到日志,便于排查。
- 更「mac 原生」的方式是用
launchctl+ plist(~/Library/LaunchAgents/),支持更细粒度的调度。 - 若 cron 不生效,优先执行第 1 步的状态检查(服务被禁用是高频原因)。
5 参考
- mac 定时任务利器 launchctl 的使用教程。
阅读 —
·
全站 —