《每日一命令09:crontab——让脚本自动运行》

先唠两句

大家好啊,我是阿垚。

欢迎来到《每日一命令》第09期。

上期聊了scp------安全的远程复制。今天聊一个运维自动化的必备工具:

crontab

你是不是还在每天凌晨手动登录服务器执行脚本?是不是经常忘记备份、忘记清理日志?

让crontab帮你自动完成这些重复性工作。

crontab是什么?

crontab是Linux下的定时任务工具。按照设定的时间周期,自动执行指定的命令或脚本。

一句话:把你想定时做的事情交给系统去做,不用再熬夜。

最常用的5种姿势

1. 编辑当前用户的定时任务

bash

复制代码
crontab -e

第一次使用时会让你选择编辑器,选nano或vim都可以。

2. 查看当前用户的定时任务

bash

复制代码
crontab -l

3. 删除所有定时任务

bash

复制代码
crontab -r

4. 以其他用户身份编辑定时任务

bash

复制代码
crontab -u username -e

5. 从文件导入定时任务

bash

复制代码
crontab task.txt

Crontab时间格式详解

bash

复制代码
* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └─── 星期几 (0-7, 0和7都代表周日)
│ │ │ └───── 月份 (1-12)
│ │ └─────── 日期 (1-31)
│ └───────── 小时 (0-23)
└─────────── 分钟 (0-59)

常用时间示例:

表达式 含义
0 2 * * * 每天凌晨2点执行
*/5 * * * * 每5分钟执行一次
0 9-18 * * 1-5 工作日9点到18点每小时执行
0 0 1 * * 每月1号凌晨执行
@reboot 系统重启后执行一次

进阶技巧

日志输出与调试

bash

复制代码
# 将输出重定向到文件
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1

# 不产生任何输出
0 2 * * * /home/user/clean.sh > /dev/null 2>&1

确保脚本有执行权限

bash

复制代码
chmod +x /path/to/script.sh

使用绝对路径

crontab执行时的环境变量与登录shell不同,建议命令和脚本都使用绝对路径。

bash

复制代码
# 不推荐
0 2 * * * backup.sh

# 推荐
0 2 * * * /home/user/backup.sh

真实场景

场景1:每天凌晨备份数据库

bash

复制代码
0 3 * * * /usr/bin/mysqldump -u root mydb > /backup/mydb_$(date +\%Y\%m\%d).sql

注意:百分号需要转义为 \%

场景2:每小时清理临时文件

bash

复制代码
0 * * * * find /tmp -type f -mtime +1 -delete

场景3:每周一早上9点发送报告

bash

复制代码
0 9 * * 1 /usr/bin/python3 /home/user/send_report.py

场景4:系统重启后启动服务

bash

复制代码
@reboot /usr/bin/systemctl start myapp

常用参数速查

命令 含义
crontab -e 编辑定时任务
crontab -l 查看定时任务
crontab -r 删除所有任务
crontab -u 指定用户
crontab -i 删除前确认

注意事项

  • 脚本中的环境变量(如PATH)与登录shell不同,建议在脚本开头手动设置PATH

  • 时间中的百分号需要转义:\%

  • 定期检查日志,确认任务是否正常执行

  • 避免任务重叠执行,可使用flock文件锁

下期预告

《每日一命令10:systemctl------别再reboot了》

评论区分享你最常用的crontab任务。

------阿垚,一个踩过2万次坑的"老"IT

相关推荐
阿牛哥_GX14 小时前
Word/PDF 文档处理:模板填充与格式转换
人工智能·自动化运维
豆瓣鸡1 天前
XXL-JOB 定时任务——从 Docker 部署到分片广播,分布式任务调度落地
spring boot·分布式·docker·定时任务
小林ixn3 天前
会议纪要自动化:用 Claude Skill 把重复工作“卷”成一行命令
agent·自动化运维
Anastasiozzzz4 天前
从单机定时到分布式调度:深度剖析 XXL-JOB 的架构设计、核心机制与生产实战
定时任务
科力锐品牌君4 天前
医院数据存储“乱象”:如何兼顾兼容、高效与合规?
大数据·安全·备份·存储·存储方案
跑路程序员7 天前
win-sshpass:功能完整的 Windows SSH 命令行工具
自动化运维
Java20158 天前
Docker、Nginx、Webhook三重门——我用两天才把网站部署成功
自动化运维
gcw102412 天前
Cron专业工具:定时任务与开发办公的一站式在线工具箱
java·前端·数据库·工具·crontab·cron·spring cron
考虑考虑13 天前
kafka4安装
后端·kafka·自动化运维
SkyWalking中文站14 天前
认识 Horizon UI · AI Assistant:用日常语言查询你的可观测性数据
运维·监控·自动化运维