【Linux】cron计划任务定时执行命令

在Linux系统中,crontab 是一种用于设置周期性执行任务的工具,通过编辑 crontab 文件 ,用户可以指定在特定时间自动运行命令或脚本。以下是关于 crontab 的详细介绍:


1. crontab 基本结构

每个 crontab 任务由一行配置组成,格式为:

bash 复制代码
* * * * * command-to-execute

五个时间字段依次表示:

  1. 分钟(0-59)
  2. 小时(0-23)
  3. 日期(1-31)
  4. 月份(1-12)
  5. 星期(0-7,0和7均表示周日)

示例:

  • 0 3 * * * /backup.sh → 每天凌晨3点执行备份脚本。
  • */15 * * * * ping example.com → 每15分钟执行一次ping命令。

2. 时间字段符号

  • *:匹配任意值。
  • ,:分隔多个值(如 1,3,5)。
  • -:定义范围(如 10-20)。
  • /:指定间隔(如 */5 表示每5单位)。

3. 常用命令

  • 编辑任务 :crontab -e
  • 列出任务 :crontab -l
  • 删除所有任务 :crontab -r
  • 指定用户 (需权限):crontab -u username -e

4. 用户级 vs 系统级任务

  • 用户级 :通过 crontab -e 编辑,任务保存在 /var/spool/cron/ 下,以用户名命名。

  • 系统级 :直接编辑 /etc/crontab 或 /etc/cron.d/ 下的文件,需指定执行用户:

    bash 复制代码
    * * * * * username /path/to/command

5. 环境变量问题

Cron 默认使用简化的环境变量,可能导致脚本执行失败。解决方法:

  • 在命令中使用绝对路径。
  • 在 crontab 文件顶部设置环境变量(如 PATH, SHELL)。

6. 错误处理与日志

  • 输出重定向 :避免邮件通知堆积:

    bash 复制代码
    * * * * * /script.sh > /dev/null 2>&1  # 丢弃输出
    * * * * * /script.sh >> /var/log/script.log 2>&1  # 记录到文件
  • 查看日志 :

    bash 复制代码
    grep CRON /var/log/syslog  # Ubuntu/Debian
    grep cron /var/log/cron    # CentOS/RHEL

7. 特殊字符串

快捷时间表达式(部分系统支持):

  • @reboot:系统启动时执行。
  • @daily 或 @midnight:每天0点执行。
  • @weekly:每周日0点执行。
  • @monthly:每月1日0点执行。

8. 注意事项

  • 时区 :Cron 使用系统时区,可通过 TZ 变量调整:

    bash 复制代码
    CRON_TZ=Asia/Shanghai
    0 8 * * * /task.sh  # 在亚洲/上海时区的8点执行
  • 权限控制 :通过 /etc/cron.allow 和 /etc/cron.deny 限制用户。

  • 秒级任务 :Cron 不支持秒级,需结合 sleep 或改用 systemd timer。


9. 示例场景

  • 每天备份数据库 :

    bash 复制代码
    0 2 * * * /usr/bin/mysqldump -u root dbname > /backup/db.sql
  • 每周清理临时文件 :

    bash 复制代码
    0 4 * * 1 /bin/rm -rf /tmp/*
  • 每10分钟检查服务状态 :

    bash 复制代码
    */10 * * * * /usr/bin/systemctl check-service nginx

通过灵活配置 crontab,可以实现自动化运维任务,如备份、监控、清理等。建议结合日志记录和环境变量设置,确保任务稳定运行。

相关推荐
bloglin9999925 分钟前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣34 分钟前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP1 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技2 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
向成科技2 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人2 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
海宇服务2 小时前
零信任架构实战:基于海宇车型识别精准构建自动化定损网关
运维·人工智能·架构·自动化
Fcy6483 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
g10565591393 小时前
公有云_云运维服务
java·运维·服务器
码农小韩3 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论