Files
nexus/wiki/concepts/Cron定时任务.md

2.5 KiB
Raw Blame History

title, tags, date
title tags date
Cron定时任务
linux
automation
devops
ubuntu
2026-04-26

Cron定时任务 (Cron Job)

Definition

Cron 是 Linux/Unix 系统的定时任务调度器允许用户配置在指定时间自动执行命令或脚本。Cron 通过 crontabcron table配置文件管理所有定时任务。

Basic Format

┌───────────── 分钟 (0-59)
│ ┌───────────── 小时 (0-23)
│ │ ┌───────────── 日期 (1-31)
│ │ │ ┌───────────── 月份 (1-12)
│ │ │ │ ┌───────────── 星期 (0-7, 0和7都是周日)
│ │ │ │ │
* * * * * command

Examples

每日凌晨3点执行备份

0 3 * * * /usr/local/bin/rsync_backup.sh

每6小时执行一次

0 */6 * * * /path/to/script.sh

每周日凌晨2点执行

0 2 * * 0 /path/to/weekly_backup.sh

每月的第一天凌晨4点执行

0 4 1 * * /path/to/monthly_backup.sh

Crontab Commands

# 编辑当前用户的 crontab
crontab -e

# 查看当前用户的 crontab
crontab -l

# 删除当前用户的 crontab
crontab -r

# 以 root 身份编辑系统 crontab
sudo crontab -e

Best Practices for Backup Jobs

1. 使用绝对路径

Cron 任务的执行环境与交互式 shell 不同PATH 环境变量可能不完整:

0 3 * * * /usr/local/bin/rsync_backup.sh  # ✅ 使用绝对路径

2. 使用 nohup 确保后台运行

0 3 * * * sudo nohup /usr/local/bin/rsync_backup.sh > /dev/null 2>&1 &

3. 使用锁文件防止重复执行

LOCKFILE="/tmp/rsync_backup.lock"
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
    echo "备份任务已在运行中,跳过本次执行。"
    exit
fi
echo $$ > ${LOCKFILE}

4. 日志记录

LOG="/var/log/rsync_backup.log"
echo "--- 开始备份: $(date) ---" >> "$LOG"
rsync -azR ... >> "$LOG" 2>&1

See Also

  • Disaster-Recovery — Cron 任务实现自动化的灾备恢复点
  • RTO — Cron 任务频率影响恢复时间目标