Linux定时任务Crontab配置教程


Crontab 是 Linux 系统自带的定时任务工具,可以按照设定的时间自动执行脚本或命令。在搬瓦工VPS上,常见的使用场景包括自动备份数据库、定期清理日志、SSL证书续期、监控脚本定时运行等。本文从基础语法到实战配置,全面讲解 crontab 的使用方法。

一、Crontab 基本操作

crontab 的管理命令只有几条,记住即可:

命令说明
crontab -e编辑当前用户的定时任务
crontab -l查看当前用户的定时任务列表
crontab -r删除当前用户的全部定时任务(慎用)
crontab -u username -e编辑指定用户的定时任务(需root权限)

首次执行 crontab -e 时,系统会提示选择编辑器。推荐选择 nano(对新手更友好),也可以选择 vim。编辑保存后,定时任务立即生效,无需重启服务。

二、Cron 表达式语法

每行定时任务由时间表达式和要执行的命令组成,格式如下:

*  *  *  *  *  command
分 时 日 月 周  要执行的命令

五个时间字段的含义:

字段取值范围说明
分钟0-59每小时的第几分钟
小时0-23每天的第几小时(24小时制)
日期1-31每月的第几天
月份1-12每年的第几个月
星期0-7星期几(0和7都表示星期日)

特殊字符说明:

三、常用定时任务示例

以下是日常管理中最常用的定时模式:

表达式含义使用场景
* * * * *每分钟执行高频监控脚本
*/5 * * * *每5分钟执行服务状态检测
0 * * * *每小时整点执行日志统计
0 2 * * *每天凌晨2点执行数据库备份
0 0 * * 0每周日零点执行周报生成
0 3 1 * *每月1号凌晨3点执行月度清理
30 4 * * 1-5工作日4:30执行工作日定时任务
0 2 1,15 * *每月1号和15号凌晨2点半月备份
0 0 * * *每天零点执行日志切割
@reboot系统启动时执行一次开机自启脚本

四、实战配置示例

运行 crontab -e 后,添加以下内容:

1. 每天凌晨3点备份MySQL数据库:

0 3 * * * mysqldump -u root -p'yourpassword' mydb > /backup/mydb_$(date +\%Y\%m\%d).sql

2. 每小时清理超过7天的日志文件:

0 * * * * find /var/log/myapp/ -name "*.log" -mtime +7 -delete

3. 每5分钟检查Nginx是否运行,停止则自动重启:

*/5 * * * * pgrep nginx > /dev/null || systemctl start nginx

4. 每天凌晨1点自动续期Let's Encrypt证书:

0 1 * * * certbot renew --quiet && systemctl reload nginx

5. 每周日凌晨将网站目录打包备份:

0 4 * * 0 tar -czf /backup/www_$(date +\%Y\%m\%d).tar.gz /var/www/html

五、输出重定向

cron任务的输出默认会以邮件形式发送给用户。在VPS上通常不需要这个功能,应将输出重定向到日志文件或丢弃。

将输出保存到日志文件:

0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1

其中 >> 表示追加写入,2>&1 表示将标准错误也重定向到同一文件。

完全丢弃输出:

0 3 * * * /root/backup.sh > /dev/null 2>&1

仅保留错误信息:

0 3 * * * /root/backup.sh > /dev/null 2>> /var/log/backup_error.log

六、注意事项

七、常见问题排查

任务不执行的排查步骤:

  1. 检查 cron 服务是否运行:systemctl status cron(Ubuntu/Debian)或 systemctl status crond(CentOS)
  2. 查看 cron 日志:grep CRON /var/log/syslog(Ubuntu)或 cat /var/log/cron(CentOS)
  3. 手动执行一次命令,确认命令本身没有问题
  4. 检查命令是否使用了绝对路径
  5. 确认 crontab 格式正确(分时日月周之间用空格分隔)
  6. 检查脚本文件权限是否正确

cron 服务管理:

# Ubuntu/Debian
systemctl start cron
systemctl enable cron

# CentOS
systemctl start crond
systemctl enable crond
Tip: 购买搬瓦工VPS时使用优惠码 NODESEEK2026 可享 6.77% 折扣,详见优惠码使用教程。更多教程请查看新手教程
关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工 BandwagonHost 的优惠信息、使用教程和方案对比,方便中文用户选购和使用。

新手必读
搬瓦工优惠码

当前最大折扣优惠码:

NODESEEK2026(优惠 6.77%)

在购买方案时填入优惠码即可自动抵扣。详见 优惠码使用教程