本文详解如何在 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 version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>Label</key> <string>com.yourname.php-minutely</string> <key>ProgramArguments</key> <array> <string>/usr/bin/php</string> <string>/Users/yourname/projects/myapp/script.php</string> </array> <key>WorkingDirectory</key> <string>/Users/yourname/projects/myapp</string> <key>StartInterval</key> <integer>60</integer> <key>RunAtLoad</key> <true/> <!-- ?? 生产环境默认注释掉;仅调试时启用 --> <!-- <key>StandardOutPath</key> <string>/tmp/php-minutely.log</string> <key>StandardErrorPath</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,因属用户级 LaunchAgent)launchctl 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 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能
相关推荐
卷无止境13 小时前
《Deep Analysis with Polars》进阶分析技巧——深入解读大博士.J13 小时前
视频号主体违规与认证上限?正确的解决方式头茬韭菜13 小时前
3.9 成本预警 — 退出钩子、$5 阈值对话框与多通道成本通知Mr.朱鹏13 小时前
【FastAPI 全栈实战 | 第2篇】Pydantic 数据校验与响应模型 —— 让 Bug 死在请求进来的那一刻2401_8734794013 小时前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装Xiangchu_13 小时前
安徽硅胶厂的转型困局:从家电到汽车,卡在哪诚信定制83913 小时前
如何启动 Redis 服务:详细步骤指南AllData公司负责人13 小时前
数据同步平台|AIIData数据中台实现MySQL、Hive、Kafka 一键接入DorisEdward1111111113 小时前
一AI名词CTA终结者13 小时前
近期AI量化工具推荐,围绕最难推进的环节选择