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

相关推荐
遇事不決洛必達21 小时前
【数据库系列】本地映射云服务器Mysql的方法
服务器·数据库·mysql·定时任务
sxdtzhp4 天前
定时任务避峰运行:远离整点,保障系统稳定运行
运维·软件工程·定时任务·crontab
淼淼爱喝水5 天前
ansible 自动化部署多主机差异化服务(httpd + vsftpd)
自动化运维
Bigger6 天前
实战:搭建 AI Code Review 自动化流水线
前端·ci/cd·自动化运维
淼淼爱喝水17 天前
Ansible 变量管理实验
ansible·自动化运维
小林学AI20 天前
掌握这 5 个 Skills 高级玩法,Claude Code 效率翻倍少走 90% 弯路
自动化运维
凭X而动20 天前
xxl-job2.5.0部署
部署·xxl-job·定时任务
o_insist24 天前
Docker 入门:从镜像、容器到项目部署
docker·自动化运维·devops
PanShanShan1 个月前
从 EOTP 到 E404:一次 npm 自动发布踩坑全记录
自动化运维
xcLeigh1 个月前
KES数据库安全、权限、审计实战
数据库·安全·备份·权限·审计·ssl加密·密码策略