温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何定时执行运维Shell脚本

发布时间:2026-11-08 19:36:32 来源:亿速云 阅读:101 作者:小樊 栏目:系统运维

定时执行运维 Shell 脚本,常见做法取决于操作系统和执行环境。下面按场景给你一个实用总结。


一、Linux 服务器(最常用)

1️⃣ 使用 cron(推荐,标准方案)

编辑定时任务

crontab -e

示例

# 每天凌晨 2 点执行
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

# 每 5 分钟执行一次
*/5 * * * * /opt/scripts/check_service.sh

权限与注意事项

  • 脚本必须有执行权限:
    chmod +x /opt/scripts/backup.sh
    
  • 建议脚本第一行指定解释器:
    #!/bin/bash
    
  • 环境变量可能不全,关键命令用绝对路径

查看任务

crontab -l

日志排查

tail -f /var/log/cron

2️⃣ 使用 systemd timer(现代服务器推荐)

适合需要精确控制、依赖管理的场景。

示例

service 文件

# /etc/systemd/system/ops-check.service
[Unit]
Description=Ops Check Script

[Service]
Type=oneshot
ExecStart=/opt/scripts/check.sh

timer 文件

# /etc/systemd/system/ops-check.timer
[Unit]
Description=Run ops check daily

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

启用

systemctl daemon-reload
systemctl enable --now ops-check.timer

查看状态

systemctl list-timers

二、Windows 服务器

使用「任务计划程序」

  1. 打开 任务计划程序
  2. 创建基本任务
  3. 触发器:每日 / 定时
  4. 操作:启动程序
  5. 程序:
    C:\Git\bin\bash.exe
    
    参数:
    C:\scripts\ops.sh
    

三、容器 / Kubernetes 环境

Kubernetes CronJob

apiVersion: batch/v1
kind: CronJob
metadata:
  name: ops-job
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: ops
            image: alpine:latest
            command: ["/bin/sh", "/scripts/ops.sh"]
          restartPolicy: OnFailure

四、运维最佳实践 ✅

  • ✅ 脚本加日志
  • ✅ 加锁防止重复执行
    exec 9>/var/lock/ops.lock
    flock -n 9 || exit 1
    
  • ✅ 失败告警(邮件 / 钉钉 / 企业微信)
  • ✅ 不在 cron 里写复杂逻辑

如果你愿意,可以告诉我:

  • 用的是 哪类系统
  • 脚本是 监控 / 备份 / 清理 / 发布
  • 是否需要 失败告警

我可以直接帮你写一套可落地的定时方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手