返回博客
五月 23, 2026指南

在 Linux 服务器上设置 Cron 任务

学习 cron 语法、crontab 编辑、常见调度示例及 VPS 自动化任务日志。

在 Linux 服务器上设置 Cron 任务

Cron 是 Linux 标准调度器,可在固定时间运行脚本和命令——备份、清理缓存、证书检查等。本指南介绍在 Hiddence 服务器上的用法。

Cron 语法

每行包含五个时间字段,后跟命令:

bash
# ┌──────── minute (0-59)
# │ ┌────── hour (0-23)
# │ │ ┌──── day of month (1-31)
# │ │ │ ┌── month (1-12)
# │ │ │ │ ┌─ day of week (0-7, 0 and 7 = Sunday)
# │ │ │ │ │
# * * * * * command

# Every day at 3:00 AM:
0 3 * * * /usr/local/bin/backup.sh

# Every 15 minutes:
*/15 * * * * /usr/local/bin/check.sh

编辑 crontab

当前用户使用 crontab -e。系统任务通常用 sudo 编辑 root crontab:

bash
# Edit your user crontab
crontab -e

# Edit root crontab
sudo crontab -e

# List current jobs
crontab -l
sudo crontab -l

常见示例

  • 0 2 * * * — 每天凌晨 2:00 备份
  • 0 */6 * * * — 每 6 小时
  • 0 0 * * 0 — 每周日午夜
  • */5 * * * * — 每 5 分钟(谨慎使用)
  • @reboot /path/script.sh — 重启后运行一次
  • @daily /usr/bin/certbot renew --quiet — 每日 Certbot 检查

日志与调试

将输出重定向到日志文件以便发现失败:

bash
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup-cron.log 2>&1

# View cron execution in system log:
grep CRON /var/log/syslog   # Ubuntu
grep CRON /var/log/cron      # CentOS

提示

  • cron 命令使用绝对路径
  • 加入 crontab 前手动测试脚本
  • 在 crontab 中设置 MAILTO=your@email.com 接收错误邮件(若已配置邮件)
  • 复杂依赖可考虑现代系统的 systemd 定时器
  • 勿每分钟运行重任务——可能使 VPS 过载