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

相关推荐
百度Geek说17 小时前
QCon上海2026:百度 SRE Agent 规模化落地实践解读
运维·自动化运维
xbzb1 天前
华为云弹性文件服务 SFS 与云备份 CBR:一个目录,多台机器共享
华为云·备份·nfs·挂载·sfs·cbr
梅雅达编程笔记2 天前
下单不付款库存被占?Flask定时任务自动取消超时订单+回滚库存
flask·毕设·定时任务·电商系统·apscheduler·myd电商·超时订单
李纲明3 天前
WordPress 定时发布不生效或计划任务堆积:先核 WP-Cron 与系统 crontab,再查 Action Scheduler
wordpress·crontab·devdiy·wp-cron·定时发布·建站排障
用户40365126059114 天前
Radmin / VNC / RDP / RustDesk:四种远程桌面客户端的启动参数对照与适配层设计
自动化运维
echome8884 天前
Linux 定时任务:crontab 写法与常见失效原因
linux·运维·网络·定时任务·crontab
李纲明6 天前
WordPress 定时发布不准点或备份/邮件从不跑:先分清 WP-Cron 触发与 DISABLE_WP_CRON,再查回环与系统 Cron
运维·性能优化·wordpress·定时任务·devdiy·wp-cron
李纲明6 天前
WordPress 定时发布不跑、备份邮件延误:先核 WP-Cron 触发与回环,再改系统 Cron
运维·wordpress·定时任务·devdiy·wp-cron
垚垚学技术_聚焦云原生9 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
分布式存储与RustFS9 天前
你的网站备份只存一块盘?把 1Panel 的备份目标换成 RustFS
运维·开源·备份·对象存储·1panel·s3·rustfs