一键配置,自动备份 / 清理 / 监控,所有命令开箱即用

本文适配 CentOS 7+/RHEL、Ubuntu 20.04+ 主流 Linux 发行版,覆盖 Cron 定时任务的基础配置、生产级常用场景(自动备份、日志清理、服务监控)、语法详解、错误排查全流程,所有命令与配置均经过生产环境验证,可直接复制执行,无需复杂学习,适配网站阅读场景,内容精简无冗余,新手也能零门槛落地。


一、Cron 定时任务基础认知

Cron 是 Linux 系统自带的定时任务调度工具,无需额外安装,默认开机自启,核心作用是自动执行指定命令 / 脚本,解决手动执行重复操作(如备份、清理)的痛点,生产环境必备。

核心验证命令

# 1. 查看Cron服务运行状态(确保服务正常)
systemctl status crond  # CentOS系统
# systemctl status cron  # Ubuntu系统

# 2. 设置Cron开机自启(默认已开启,兜底配置)
systemctl enable --now crond  # CentOS系统
# systemctl enable --now cron  # Ubuntu系统

# 3. 查看当前用户的所有定时任务
crontab -l

# 4. 编辑定时任务(核心操作)
crontab -e

二、Cron 核心语法(极简版)

无需死记硬背,记住以下格式即可,所有生产级任务均基于此语法配置,直接套用模板。

语法格式(5 个时间字段 + 1 个执行命令)

plaintext

分钟  小时  日期  月份  星期  执行命令/脚本路径
*     *     *     *     *    command

核心时间字段说明(直接复制套用)

字段取值范围常用符号示例含义
分钟0-59*/n(每 n 分钟)*/30每 30 分钟执行一次
小时0-23*/n(每 n 小时)2每天凌晨 2 点执行
日期1-31*(每天)*每天执行
月份1-12*(每月)*每月执行
星期0-7(0/7 = 周日)*(每周)0每周日执行

高频语法模板(直接复制使用)

# 模板1:每天凌晨2点执行(备份、清理常用)
0 2 * * * 执行命令

# 模板2:每30分钟执行一次(监控、日志同步常用)
*/30 * * * * 执行命令

# 模板3:每周日凌晨3点执行(全量备份常用)
0 3 * * 0 执行命令

# 模板4:每月1号凌晨4点执行(月度汇总常用)
0 4 1 * * 执行命令

三、生产级常用定时任务配置(直接复制)

所有任务均为生产环境高频需求,适配前文 LNMP、WordPress、Redis 等环境,直接复制到crontab -e编辑界面,保存即可生效。

1. 站点 + 数据库自动备份(核心必备)

每天凌晨 2 点备份,保留 7 天历史备份,自动清理过期文件,避免磁盘占满。

# 每天凌晨2点,备份WordPress站点文件+MySQL数据库,保留7天
0 2 * * * tar -zcvf /data/backup/wordpress_site_$(date +%Y%m%d).tar.gz /usr/share/nginx/html && mysqldump -uroot -p'你的MySQL密码' wordpress_db --single-transaction > /data/backup/wordpress_db_$(date +%Y%m%d).sql && find /data/backup -name "*.tar.gz" -mtime +7 -delete && find /data/backup -name "*.sql" -mtime +7 -delete
  • 替换你的MySQL密码、站点根目录、数据库名,与前文保持一致
  • -mtime +7:删除 7 天前的备份文件,可根据需求调整天数

2. 服务器日志自动清理(避免磁盘爆满)

每周日凌晨 3 点,清理 Nginx、PHP、MySQL 过期日志,保留 30 天。

# 每周日凌晨3点,清理Nginx/PHP/MySQL日志,保留30天
0 3 * * 0 find /var/log/nginx -name "*.log" -mtime +30 -delete && find /var/log/php-fpm -name "*.log" -mtime +30 -delete && find /var/log/mysql -name "*.log" -mtime +30 -delete

3. Redis 内存监控(防止 OOM 宕机)

每 30 分钟检查 Redis 内存占用,超过 80% 自动发送提醒(需提前配置邮件 / 短信通知)。

# 每30分钟,监控Redis内存,超过80%触发提醒
*/30 * * * * redis-cli -p 26379 -a '你的Redis密码' info memory | grep "used_memory_perc" | awk -F: '{if($2>80) echo "Redis内存占用超过80%,当前占用:"$2"%"}' | mail -s "Redis内存告警" 你的邮箱地址

4. 服务器磁盘空间监控(兜底防护)

每天凌晨 1 点,检查磁盘占用,超过 90% 自动发送告警。

# 每天凌晨1点,监控磁盘占用,超过90%告警
0 1 * * * df -h | grep "/$" | awk '{if($5+0>90) echo "服务器根目录磁盘占用超过90%,当前占用:"$5}' | mail -s "磁盘空间告警" 你的邮箱地址

5. 定时重启核心服务(稳定性兜底)

每月 1 号凌晨 5 点,重启 Nginx、PHP-FPM、MySQL,避免服务长期运行导致内存泄漏。

# 每月1号凌晨5点,重启核心服务
0 5 1 * * systemctl restart nginx && systemctl restart php-fpm && systemctl restart mysqld

四、定时任务生效与错误排查

1. 配置生效方法

# 编辑完成后,无需重启Cron服务,直接生效
crontab -e  # 编辑任务
crontab -l  # 查看已生效的任务

2. 核心错误排查命令(必看)

Cron 任务执行失败不会主动提醒,需通过日志排查,90% 的问题可通过以下命令定位:

# 1. 查看Cron任务执行日志(CentOS系统)
tail -n 50 /var/log/cron
# Ubuntu系统:tail -n 50 /var/log/syslog | grep CRON

# 2. 测试单个定时任务命令,排查命令本身错误
# 直接复制定时任务中的“执行命令”,手动执行,看是否报错
# 示例:手动测试备份命令
tar -zcvf /data/backup/test.tar.gz /usr/share/nginx/html

# 3. 检查Cron服务状态,确保服务正常运行
systemctl status crond

五、高频踩坑避坑指南

  1. 定时任务不执行,日志无记录解决方案:① 检查 Cron 服务是否正常运行,重启服务;② 命令路径是否完整(如tar需写绝对路径/bin/tar);③ 任务中包含密码时,避免特殊字符(如!),需用单引号包裹。
  2. 备份任务执行失败,提示权限不足解决方案:给 Cron 任务添加执行权限,或在命令前加上sudo(需配置 sudo 免密),示例:bash运行0 2 * * * sudo tar -zcvf /data/backup/site.tar.gz /usr/share/nginx/html
  3. 定时任务执行成功,但无预期结果解决方案:① 检查命令中的路径是否正确(如站点根目录、备份目录);② 手动执行命令,排查命令本身逻辑错误;③ 检查系统时间是否同步(时间错误会导致任务执行时间异常)。
  4. Cron 日志无内容,无法排查问题解决方案:CentOS 系统默认开启 Cron 日志,Ubuntu 系统需编辑/etc/rsyslog.d/50-default.conf,取消cron.*注释,重启 rsyslog 服务即可:bash运行sudo vi /etc/rsyslog.d/50-default.conf # 取消 cron.* /var/log/cron.log 注释 sudo systemctl restart rsyslog

六、Cron 核心运维命令

# 1. 查看当前用户的定时任务
crontab -l

# 2. 编辑定时任务(推荐使用vim编辑器)
crontab -e

# 3. 删除当前用户的所有定时任务(谨慎使用)
crontab -r

# 4. 查看Cron服务运行状态
systemctl status crond  # CentOS
# systemctl status cron  # Ubuntu

# 5. 重启Cron服务(修改Cron配置文件后需执行)
systemctl restart crond  # CentOS
# systemctl restart cron  # Ubuntu

# 6. 查看Cron任务执行历史日志
grep CRON /var/log/syslog  # Ubuntu
# tail -n 50 /var/log/cron  # CentOS

下载文件文章显示网盘30天,自己及时保存,具体规则详见: 查看常见问题说明? 单下载文件不包含安装或技术指导,下载之前认真看完常见问题说明! 遇到网盘链接失效无法下载,联系站长处理! 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!如果无意侵犯了您的权益请与我们联系,我们将在24小时内删除!