《每日一命令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

相关推荐
云智慧AIOps社区14 小时前
MSP 的增长瓶颈不在客户,在交付模式:人效与规模如何兼得?
运维·人工智能·自动化运维
用户5708462574402 天前
自动化里的「假成功」:三类静默失败的定位方法
自动化运维
AliCloudROS2 天前
OOS ChatOps Agent 定时任务:每天 9 点,让Agent 在钉钉群里交运维报告
运维·自动化运维
行者-全栈开发2 天前
【鸿蒙心迹】ExtensionAbility 实战——从 Form 到分享与备份的组件选型(HarmonyOS 7.x)
备份·分享·卡片·uiability·stage 模型·选型决策树
追光者492 天前
我把 55 篇自动化日志翻了一遍:最容易出事的是这 4 个地方
python·自动化运维
深蓝电商API2 天前
爬虫任务调度:从crontab到Airflow的进阶路线
爬虫·crontab·airflow
考虑考虑2 天前
JFROG手动上传包
运维·后端·自动化运维
东莞市云毅网络有限公司2 天前
客服记录里的问句怎么变成知识库条目:意图聚类的 Python 实现
python·sqlite·自动化运维·geo·数据监测
用户3494467912032 天前
我把午饭外包给了 AI:用麦当劳官方 MCP 造了个每天自己写日记的 GitHub 仓库
自动化运维
要开心吖ZSH2 天前
定时任务是用外部调度(xxl-job)还是本地化( @Scheduled)更香?以号源刷新任务为例?
java·xxl-job·定时任务·scheduled