当前位置:首页>Linux>Linux 定时任务实战让服务器在凌晨两点自动帮你干活

Linux 定时任务实战让服务器在凌晨两点自动帮你干活

  • 2026-09-04 02:10:00
Linux 定时任务实战让服务器在凌晨两点自动帮你干活

Linux 定时任务实战

让服务器在凌晨两点自动帮你干活

Linux基础  实战课 

Linux 运维进阶 · 定时任务篇

————————————————

💬 有一类活,适合让机器干,不适合让人干——那就是「凌晨两点执行备份」这种事。

之前接了个项目,甲方要求每天凌晨把数据库备份一次,传到另一台服务器存档。第一周我是手动跑的,结果有天晚上忘了,第二天被运维主管叫去问话。那天之后我花了半小时配好了 crontab,从此再也没忘过——机器不会忘,不会累,也不会睡过头。

这篇手把手教你用 crontab 设定时任务,从语法到实战,看完就能上手。

————————————————

一、crontab 是什么?

crontab 是 Linux 内置的定时任务工具,全称 cron table(定时表)。你在里面写好「什么时候、执行什么命令」,系统后台的 cron 守护进程就会在指定时间自动帮你跑。

它能做什么?

● 每天凌晨自动备份数据库

● 每小时清理一次临时文件

● 每周一早上 8 点发一封状态报告邮件

● 每 5 分钟检查一次服务是否还活着

💡 cron 服务需要在运行才能执行定时任务。检查:systemctl status cron(Debian/Ubuntu)或 systemctl status crond(CentOS)。

二、cron 时间表达式:看懂这 5 个字段

crontab 的每一行长这样:

分钟

小时

日期

月份

星期

命令

0-59

0-23

1-31

1-12

0-7

要执行的命令

特殊符号的含义:

符号

含义

*

任意值(每分钟/每小时/每天……)

,

枚举:1,3,5 表示 1、3、5

-

范围:1-5 表示 1 到 5

/

步长:*/5 表示每隔 5

三、常用示例:看懂就会写

cron 表达式

含义

0 2 * * *命令

每天凌晨 2:00 执行

30 8 * * 1命令

每周一早上 8:30 执行

*/5 * * * *命令

每 5 分钟执行一次

0 */2 * * *命令

每隔 2 小时执行一次

0 0 1 * *命令

每月 1 号午夜执行

0 8,12,18 * * *命令

每天 8:00、12:00、18:00 执行

0 2 * * 1-5命令

每周一至周五凌晨 2:00

💡 不确定自己写的表达式对不对?用 https://crontab.guru 在线验证,输入表达式会用自然语言翻译给你看,特别好用。

四、操作 crontab:三条核心命令

crontab -e

编辑当前用户的定时任务(推荐用这个)

crontab -l

列出当前用户的所有定时任务

crontab -r

删除当前用户的全部定时任务

⚠️ crontab -r 会删除全部任务,没有确认提示!手滑了就什么都没了。建议改任务前先 crontab -l > backup.txt 备份一下。

五、实战:四个最常用的定时任务

直接给你能复制粘贴的版本:

① 每天凌晨 2 点备份 MySQL 数据库:

0 2 * * * /usr/bin/mysqldump -u root -p密码 数据库名 > /backup/db_$(date +%Y%m%d).sql

每日凌晨2点备份

② 每 5 分钟检查 Nginx 是否存活,挂了自动重启:

*/5 * * * * systemctl is-active --quiet nginx || systemctl restart nginx

Nginx 存活守卫

③ 每周日凌晨 3 点清理超过 30 天的日志:

0 3 * * 0 find /var/log/nginx -name '*.log.*' -mtime +30 -delete

定期清理旧日志

④ 每天早上 8 点发系统状态报告(邮件):

0 8 * * * df -h | mail -s '每日磁盘报告' admin@example.com

每日状态播报

💡 crontab 里的命令要用绝对路径。比如 /usr/bin/mysqldump 而不是 mysqldump——cron 执行时的 PATH 环境变量和你终端里的不一样,直接写命令名可能找不到。

如果任务跑出错了,怎么查原因?cron 默认会把输出发邮件,但大多数服务器没配邮件。最保险的方法是把日志重定向出来:

0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1

把输出和错误都记到日志文件

⚠️ 2>&1 这一段不能少!不加的话脚本里的报错信息会被静默吞掉,出了问题完全不知道为什么。

总结

crontab 要记的核心就这三件事:

① 五字段语法:分 时 日 月 周 命令

② 三个操作:-e 编辑、-l 查看、-r 删除(-r 慎用)

③ 生产使用两个好习惯:命令用绝对路径、输出重定向到日志文件

有了 crontab,服务器就真正变成了一个会自己干活的机器人。配合上一篇的 Shell 脚本,你能搭出一套轻量级的自动化运维体系。

————————————————

下篇预告:《Linux 环境变量入门:装了软件却找不到命令?搞懂 PATH 就好了》

💬 你现在服务器上有哪些跑着的定时任务?

评论区聊聊,说不定能给别人一个思路

👍 点赞💬 留言🔄 转发给需要的朋友

有问题欢迎评论区留言,看到都会回复

最新文章

随机文章