当前位置: 首页 > news >正文

Linux 中定时任务:crontab

Linux 中最常用的定时任务工具是cron,通过crontab命令来管理。它可以在指定的时间自动执行脚本或命令。

一、定时任务

概念说明
cronLinux 系统的定时任务服务(后台守护进程)
crontab管理定时任务的命令
cron job一个具体的定时任务

二、crontab 基本命令

1. 管理定时任务

# 编辑当前用户的定时任务 crontab -e # 查看当前用户的定时任务 crontab -l # 删除当前用户的所有定时任务 crontab -r # 以指定用户身份操作(需要 root 权限) crontab -u username -e crontab -u username -l

2. 第一次使用

# 第一次执行 crontab -e 时会提示选择编辑器 # 推荐选择 3(vim.basic)或 2(nano) crontab -e

三、时间表达式(Cron 表达式)

1. 基本格式

* * * * * 要执行的命令 │ │ │ │ │ │ │ │ │ └─── 星期几(0-7,0和7都表示周日) │ │ │ └───── 月份(1-12) │ │ └─────── 日期(1-31) │ └───────── 小时(0-23) └─────────── 分钟(0-59)

2. 特殊符号

符号含义示例
*任意值* * * * *= 每分钟
,枚举多个值1,15 * * * *= 第1和15分钟
-范围1-5 * * * *= 第1到5分钟
/步长*/5 * * * *= 每5分钟
*/10 * * * *每10分钟执行一次

3. 常见时间表达式

# 每分钟执行 * * * * * /path/to/script.sh # 每小时执行(整点) 0 * * * * /path/to/script.sh # 每天凌晨 2:30 执行 30 2 * * * /path/to/script.sh # 每周一凌晨 3:00 执行 0 3 * * 1 /path/to/script.sh # 每月 1 号凌晨 4:00 执行 0 4 1 * * /path/to/script.sh # 每 10 分钟执行 */10 * * * * /path/to/script.sh # 工作日(周一至周五)上午 9:00 执行 0 9 * * 1-5 /path/to/script.sh # 周末上午 10:00 执行 0 10 * * 6,0 /path/to/script.sh

四、应用示例

示例 1:日志清理

# 每天凌晨 3:00 清理超过 30 天的日志 0 3 * * * find /var/log/myapp -name "*.log" -mtime +30 -delete >> /var/log/cleanup.log 2>&1

示例 2:定时检查服务状态

# 每 5 分钟检查 Nginx 是否运行,停止则重启 */5 * * * * systemctl is-active nginx || systemctl restart nginx

示例 3:定时发送邮件报告

# 每天早上 8:00 发送系统状态报告 0 8 * * * /home/user/report.sh | mail -s "Daily Report" admin@example.com

五、调试

1. 查看 cron 日志

# 查看 cron 日志(不同系统位置不同) tail -f /var/log/syslog | grep CRON # 或 tail -f /var/log/cron

2. 将输出重定向到文件

# 记录标准输出和标准错误到日志文件 0 2 * * * /path/to/script.sh >> /var/log/myscript.log 2>&1

六、其他定时任务工具

工具说明适用场景
crontab最常用,系统级日常定时任务
at一次性定时任务只执行一次的任务
systemd timerssystemd 定时器现代 Linux 系统推荐
anacron非 7x24 运行的系统笔记本电脑

一次性任务(at)

# 安装 at sudo apt install at # 现在执行一次(立即) echo "command" | at now # 一分钟后执行 echo "command" | at now + 1 minute # 明天上午 10:00 执行 echo "command" | at 10:00 tomorrow # 查看队列 atq # 删除任务 atrm <job_id>

七、常见问题排查

Q1:定时任务没有执行?

检查步骤

  1. 检查 cron 服务是否运行:systemctl status cron

  2. 检查执行权限:chmod +x script.sh

  3. 使用绝对路径:脚本中所有路径都用绝对路径

  4. 检查环境变量:cron 执行时环境变量与登录 shell 不同

# 测试环境变量 * * * * * env > /tmp/cron_env.txt # 对比登录 shell 的环境变量 env > /tmp/shell_env.txt

Q2:在定时任务中使用环境变量

# 在 crontab 文件开头设置环境变量 PATH=/usr/local/bin:/usr/bin:/bin SHELL=/bin/bash JAVA_HOME=/usr/lib/jvm/java-11 # 然后再写任务 0 2 * * * /path/to/script.sh

Q3:crontab 文件在哪里?

# 系统级定时任务 /etc/crontab /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/ # 用户级定时任务 /var/spool/cron/crontabs/username
http://www.jsqmd.com/news/1379262/

相关文章:

  • 妇科阴部手术图解:从可视化学习到临床实战的完整指南
  • Dhizuku终极指南:三步解锁Android设备所有者权限的完整方案
  • 护肤品牌福来有哪些产品?从一瓶身体油到四大全线护理的深度盘点 - 甄选测评馆
  • 微信机器人实战指南:30分钟构建高效智能监控系统
  • 从Function Calling到MCP:AI工具集成的协议化演进与实战
  • Windows平台Qt C++ GUI开发:从环境搭建到高效部署全攻略
  • FastAPI中GET、POST、PUT、DELETE到底怎么选?一篇讲透!
  • C++之std::map 全面详解:底层原理、最佳实践与踩坑指南
  • 小米Pad 5 Windows驱动完整指南:让你的安卓平板变身高效Windows工作站
  • 现代开发者效率工具箱:配置管理、AI助手与规则懒加载实战
  • Godot平滑插件:解决物理帧与渲染帧不同步导致的视觉卡顿
  • 4G全网通SMD贴片天线选型与PCB设计实战指南
  • B站批量取关全攻略:官方工具与脚本技术解析,实现数字断舍离
  • 护肤品牌福来有哪些产品?一文看懂德国药剂师家族的产品矩阵 - 甄选测评馆
  • 统信UOS连接Windows共享打印机:飞腾ARM平台实战指南
  • 高清磁场观察薄膜:原理、应用与实战指南
  • Kimi K3模型开源实战:从API调用到本地部署的完整指南
  • 视频片段自动化提取:从AI识别到批量处理的完整技术方案
  • 2026原木风实木餐桌怎么选:高级耐用品牌推荐 - 优企甄选
  • 太空太阳能电站
  • ROS多节点LIOSAM改造:解决命名冲突与资源竞争
  • 代码块:长文中的‘荧光浮标’!让「关键内容」无损高亮呈现
  • 从零部署本地大模型:Llama.cpp实战指南与性能调优
  • 使用FFmpeg实现音频视频降速处理:从原理到批量脚本全解析
  • 2026年国内适配多场景的玻璃钢脱硫塔厂家** - 甄选测评馆
  • 大模型Function Calling原理与实践:从自然语言到工具调用的AI应用开发
  • Claude Desktop 国内安装教程(Windows,2026)
  • SpringCloud微服务Docker容器化部署实战:从环境配置到编排优化
  • Spring Boot集成Flowable工作流引擎:三注解搞定请假审批流程
  • 杭州参团究竟选哪家更稳妥?2026年杭州旅行社前十纯玩无套路零投诉,家庭暑期出游综合测评参考 - 跟我去旅游