crontab 定时任务完全指南:让服务器自动干活

zheng头像
zheng 2026-07-15 09:00
楼主

> 凌晨 3 点自动备份数据库、每小时检查网站是否在线、每天早上给自己发一封服务器状态邮件——这些都可以用 crontab 定时任务来实现。它是 Linux 上最常用、最简单的自动化工具。

---

## crontab 是什么?

crontab 是 Linux 系统自带的任务调度器,可以按照设定的时间周期自动执行命令或脚本。无需额外安装,系统原生支持。

---

## 基本语法

```
分 时 日 月 星期 要执行的命令
* * * * * command
```

| 字段 | 取值范围 |
|------|---------|
| 分钟 | 0-59 |
| 小时 | 0-23 |
| 日期 | 1-31 |
| 月份 | 1-12 |
| 星期 | 0-7(0和7都是周日) |

---

## 常用时间设置

```bash
# 每分钟执行
* * * * * command

# 每天凌晨 3 点
0 3 * * * command

# 每周一早上 9 点
0 9 * * 1 command

# 每月 1 号凌晨
0 0 1 * * command

# 工作日每小时
0 * * * 1-5 command

# 每 10 分钟
*/10 * * * * command

# 每天的 9、12、15、18、21 点
0 9,12,15,18,21 * * * command
```

---

## 如何编辑和使用

```bash
crontab -e # 编辑当前用户的定时任务
crontab -l # 查看当前用户的定时任务列表
crontab -r # 删除所有定时任务(慎用!)
```

---

## 实用案例

### 1. 定时备份数据库

```bash
0 3 * * * /opt/backup_db.sh >> /var/log/backup.log 2>&1
```

每天凌晨 3 点执行备份脚本。

### 2. 定时清理日志

```bash
0 4 * * 0 find /var/log -name "*.log" -mtime +30 -delete
```

每周日凌晨 4 点删除 30 天前的日志。

### 3. 网站健康检查

```bash
*/5 * * * * curl -s https://blog.example.com > /dev/null || echo "Site down!" | mail -s "Alert" [email protected]
```

每 5 分钟检查一次网站。

### 4. SSL 证书自动续期

```bash
0 2 * * 1 certbot renew --quiet
```

---

## 常见问题

**Q:为什么我的定时任务不执行?**

1. 检查 crontab 语法是否正确:分 时 日 月 星期
2. 使用绝对路径,比如用 /usr/bin/python3 而不是 python3
3. 脚本要有执行权限:chmod +x script.sh
4. 查看系统日志排查:grep CRON /var/log/syslog

**Q:环境变量不一样怎么办?**

crontab 的环境变量和登录 shell 不同。可以在 crontab 文件开头设置:

```bash
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
HOME=/root

0 3 * * * /opt/backup.sh
```

---

crontab 就是你服务器上的闹钟。花 5 分钟学会,以后备份、清理、监控这些重复劳动都不用自己动手了。

网站自动备份方案:数据库 + 文件定时备份,再也不怕数据丢失 SSH 密钥登录配置:告别密码,安全又方便

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:2741