温馨提示×

centos上weblogic的定时任务如何设置

小樊
32
2025-12-23 17:12:38
栏目: 智能运维

在 CentOS 上设置 WebLogic 定时任务的两种常用方式

  • 方式一:使用 Linux crontab 定时执行系统脚本(如重启、备份、清理),简单通用,适合运维层面操作。
  • 方式二:在 WebLogic 应用内使用 JMX Timer Service 触发业务逻辑(如定时拉起任务、开关监控),由 WebLogic 托管线程与安全上下文执行,适合与业务强相关的定时需求。

方式一 Linux crontab 定时执行脚本

  • 典型场景

    • 定时重启 WebLogic(缓解内存泄漏、假死等稳定性问题)
    • 定时备份域目录、日志与应用
    • 定时清理缓存与临时文件
  • 快速示例

    • 每天 03:00 重启
      0 3 * * * /opt/scripts/webrestart.sh >> /var/log/webrestart.log 2>&1
      
    • 每天 02:00 备份域目录(保留 7 天)
      0 2 * * * /opt/scripts/backup_weblogic.sh >> /var/log/backup_weblogic.log 2>&1
      
    • 查看与生效
      crontab -e              # 编辑当前用户定时任务
      crontab -l              # 查看
      systemctl status crond   # 确认 crond 服务运行(CentOS 7/8)
      
    • 说明:crontab 语法为“分 时 日 月 周 命令”;脚本需可执行并具备相应权限。
  • 脚本要点与示例

    • 重启脚本 webrestart.sh(先优雅停机,失败再强杀,最后启动并记录日志)
      #!/bin/bash
      set -e
      export DOMAIN_HOME="/u01/app/weblogic/user_projects/domains/base_domain"
      export LOG_DIR="$DOMAIN_HOME/logs"
      LOG="$LOG_DIR/webrestart_$(date +%F).log"
      
      echo "[$(date)] === 开始重启 ===" >> "$LOG"
      
      # 1) 优雅停机(WLST 示例,按实际域与凭据调整)
      "$DOMAIN_HOME/bin/stopWebLogic.sh" >> "$LOG" 2>&1 || true
      
      # 2) 等待进程退出
      for i in {1..30}; do
        pgrep -f weblogic.Name=AdminServer >/dev/null || break
        sleep 10
      done
      
      # 3) 强杀残留(谨慎)
      PIDS=$(pgrep -f weblogic.Name=AdminServer || true)
      if [[ -n "$PIDS" ]]; then
        echo "[$(date)] 强制结束进程: $PIDS" >> "$LOG"
        kill -9 $PIDS || true
      fi
      
      # 4) 启动(建议使用 nohup 或后台启动脚本)
      cd "$DOMAIN_HOME"
      nohup ./startWebLogic.sh >> "$LOG" 2>&1 &
      
      echo "[$(date)] === 重启完成 ===" >> "$LOG"
      
    • 备份脚本 backup_weblogic.sh(压缩域目录并清理旧备份)
      #!/bin/bash
      set -e
      BACKUP_DIR="/opt/backup/weblogic"
      DATE=$(date +%Y%m%d%H%M%S)
      DOMAIN_DIR="/u01/app/weblogic/user_projects/domains/base_domain"
      
      mkdir -p "$BACKUP_DIR"
      zip -r "$BACKUP_DIR/domain_backup_$DATE.zip" "$DOMAIN_DIR" >> "$BACKUP_DIR/backup.log" 2>&1
      
      # 保留最近 7 天
      find "$BACKUP_DIR" -mtime +7 -type f -name "domain_backup_*.zip" -delete
      
    • 安全建议
      • 避免在脚本中明文写 WebLogic 管理员口令;生产可用 WLST 交互式登录或安全凭据存储。
      • 停机优先用 stopWebLogic.sh / WLST,仅在必要时使用 kill -9,并在停机后适当等待。
      • 日志按日期切分,配合 logrotate 做滚动与清理。

方式二 在 WebLogic 内使用 JMX Timer Service

  • 适用场景

    • 需要在 WebLogic Server JVM 内、以 特定 WebLogic 用户 身份执行定时任务(如定时开启/停止监控、定时触发业务 MBean 操作)。
    • 任务随服务器实例生命周期运行,重启后需由应用重新注册定时器。
  • 核心步骤

    1. 在应用中实现 JMX NotificationListener
    2. 创建并配置 weblogic.management.timer.TimerMBean,设置首次触发时间与重复间隔(如“每日 09:00 触发”或“每 5 分钟触发一次”)。
    3. 将监听器(及可选过滤器)注册到 TimerMBean,并启动定时器。
    4. 在适当时机注销 TimerMBean,关闭与 MBeanServer 的连接。
    5. 打包并部署到 WebLogic;注意每次服务器重启后需重新实例化并注册定时器配置。
  • 适用性与优势

    • 由 WebLogic 托管线程执行,具备 服务器安全上下文;适合与 WebLogic 管理对象(MBean)交互的定时逻辑。

如何选择与注意事项

  • 选择建议

    • 运维类操作(重启、备份、清理):优先用 crontab,简单可靠、与服务器解耦。
    • 业务类定时(需在 WLS 内以特定用户执行 MBean 操作):使用 JMX Timer Service,与 WebLogic 集成更紧密。
  • 稳定性与风险控制

    • 重启前尽量 优雅停机,设置 超时等待健康检查(如端口连通性、应用就绪探针)。
    • 避免频繁重启;若必须定时重启,建议安排在 低峰时段,并做好 回滚与告警
    • 凭据与合规:避免在脚本中硬编码口令,优先使用 WLST 安全登录或凭据管理工具。
    • 日志与审计:统一落盘、按日切分、定期归档;对定时任务本身增加 执行日志失败告警(如邮件/企业微信/钉钉机器人)。

以上两种方式可覆盖大多数在 CentOS 上对 WebLogic 的定时需求;若需要,我可以基于你的实际目录、端口与管理员账户,生成可直接使用的脚本与 crontab 条目。

0