什么是定时任务(Cron Job)?如何在泰国虚拟主机上设置Cron 2026
定时任务(Cron Job)是在托管服务器上按指定时间间隔自动运行的计划任务。"cron"一词源自希腊语中表示时间的词(chronos)。定时任务对于自动化重复性工作至关重要,如数据库备份、电子邮件通讯、站点地图更新、缓存清理和日志轮换——无需任何手动干预。
Cron表达式语法
Cron表达式由5个时间字段和要执行的命令组成:
* * * * * 命令
| | | | |
| | | | └── 星期几 (0=周日, 1=周一...6=周六)
| | | └──── 月份 (1-12)
| | └────── 日期 (1-31)
| └──────── 小时 (0-23)
└────────── 分钟 (0-59)
使用*表示"任意值",数字表示特定值,*/n表示"每n个单位",逗号分隔多个值。
常用Cron表达式示例
0 * * * *— 每小时第0分钟运行0 2 * * *— 每天凌晨2:00运行0 2 * * 0— 每周日凌晨2:00运行0 2 1 * *— 每月1日凌晨2:00运行*/5 * * * *— 每5分钟运行一次0 9,17 * * 1-5— 周一至周五9:00和17:00运行
在DirectAdmin中创建定时任务
- 登录DirectAdmin → 高级功能 → 定时任务。
- 填写分钟、小时、日期、月份、星期字段和命令。
- 示例——每天凌晨2点备份数据库:
/usr/bin/mysqldump -u dbuser -p'dbpass' dbname > /home/user/backup/db_$(date +\%Y\%m\%d).sql - 点击添加定时任务。
WordPress WP-Cron
WordPress有自己的调度系统WP-Cron,每当访客加载页面时运行wp-cron.php。问题在于:如果您的网站没有访客,计划任务就不会运行。
解决方案:禁用WP-Cron并创建真正的服务器定时任务:
# 在wp-config.php中添加:
define('DISABLE_WP_CRON', true);
# 在DirectAdmin中创建真实定时任务:
*/5 * * * * /usr/bin/php /home/user/public_html/wp-cron.php > /dev/null 2>&1
定时任务常见使用场景
- 数据库备份:每天凌晨2:00自动mysqldump
- 发送通讯邮件:每15分钟处理邮件队列
- 站点地图更新:每6小时重新生成sitemap.xml
- 清除缓存:每小时删除过期缓存文件
- 日志轮换:每周归档和删除旧日志文件
- 临时文件清理:每天删除临时上传文件
常见问题解答
定时任务最频繁可以多久运行一次?
标准cron的最小间隔是每1分钟(*/1 * * * *)。但许多主机提供商限制cron运行频率不超过每5分钟一次。请查看您的主机提供商的cron政策。
如何知道定时任务是否失败?
如果配置了MAILTO,cron通常会在任务失败时发送邮件通知。或者在命令末尾添加错误日志重定向:2>> /tmp/cron-error.log
如果定时任务运行时间超过计划间隔会怎样?
Cron会在仍在运行的任务上启动新实例,可能导致竞争条件或数据损坏。使用锁文件或flock命令可以防止这种情况。
定时任务和WordPress计划文章有什么区别?
WordPress计划文章使用WP-Cron,只有当访客加载页面时才运行。如果网站访问量低,文章可能发布延迟。设置真正的服务器定时任务每5分钟触发一次WP-Cron,可以可靠地解决这个问题。