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

相关推荐
说了很好18 小时前
基于有限状态机的模块化 PLC 多色物料分拣容错控制系统设计
自动化运维
说了很好2 天前
工业通用 PLC 分拣模板!传感器去抖 + 气缸互锁 + 状态机 + 超时报警全套
自动化运维
SelectDB7 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
小林ixn8 天前
别再手写Prompt了!用AI Loop实现自动化自我迭代,效率提升10倍
人工智能·自动化运维
用户556918817538 天前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
怕浪猫9 天前
Playwright 的 CDP Session 机制详解
浏览器·ai编程·自动化运维
kyriewen14 天前
从本地到生产:迁移到 GitHub Actions 自动化 CI/CD,总结了这 5 个坑
前端·github·自动化运维
极客先躯16 天前
高级java每日一道面试题-2026年02月03日-实战篇[Docker]-如何备份和恢复 Docker Volume?
运维·docker·容器·自动化·备份·持久化·恢复
小森林之主18 天前
秒级定时任务速查手册:核心语法与实用示例
定时任务·cron·定时调度·速查手册·秒级定时