本文详解如何在 macOS 上通过 launchd配合 .plist 配置文件替代传统 cron实现每分钟自动运行 PHP 脚本涵盖 plist 编写、权限设置、加载调试及关键避坑提示。 本文详解如何在 macos 上通过 launchd配合 .plist 配置文件替代传统 cron实现每分钟自动运行 php 脚本涵盖 plist 编写、权限设置、加载调试及关键避坑提示。在 macOS 系统中launchd 是官方推荐的守护进程管理机制比传统 cron 更可靠、更集成尤其适合用户级定时任务如每分钟执行一个 PHP 脚本。与 Linux 的 crontab 不同launchd 通过 XML 格式的 .plist 文件定义任务行为支持精确的时间间隔、环境隔离和自动重启等高级特性。? 正确创建 LaunchAgent plist 文件将以下内容保存为 ~/Library/LaunchAgents/com.yourname.php-minutely.plist请将 yourname 替换为实际用户名并确保命名符合反向域名规范?xml version1.0 encodingUTF-8?!DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtdplist version1.0dict keyLabel/key stringcom.yourname.php-minutely/string keyProgramArguments/key array string/usr/bin/php/string string/Users/yourname/projects/myapp/script.php/string /array keyWorkingDirectory/key string/Users/yourname/projects/myapp/string keyStartInterval/key integer60/integer keyRunAtLoad/key true/ !-- ?? 生产环境默认注释掉仅调试时启用 -- !-- keyStandardOutPath/key string/tmp/php-minutely.log/string keyStandardErrorPath/key string/tmp/php-minutely.err/string --/dict/plist? 关键字段说明 Label唯一标识符必须与文件名一致不含 .plist 后缀 ProgramArguments不可用 shell -c 包裹需显式指定 PHP 解释器路径建议用 which php 确认及脚本绝对路径 WorkingDirectory确保脚本内相对路径如 include config.php;能正确解析 StartInterval 60严格按秒计时每 60 秒触发一次非“每分钟整点” RunAtLoad系统登录后立即启动避免首次延迟。? 设置权限并加载任务# 设置标准权限644 是 launchd 强制要求chmod 644 ~/Library/LaunchAgents/com.yourname.php-minutely.plist# 验证权限应显示 -rw-r--r--ls -l ~/Library/LaunchAgents/com.yourname.php-minutely.plist# 加载配置无需 sudo因属用户级 LaunchAgentlaunchctl load ~/Library/LaunchAgents/com.yourname.php-minutely.plist# ? 可选立即手动触发一次测试launchctl start com.yourname.php-minutely? 提示若加载失败运行 launchctl list | grep yourname 查看是否已注册错误日志可通过 console.app 搜索 com.yourname.php-minutely 实时追踪。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能