centos上weblogic的定时任务如何设置
导读:在 CentOS 上设置 WebLogic 定时任务的两种常用方式 方式一:使用 Linux crontab 定时执行系统脚本(如重启、备份、清理),简单通用,适合运维层面操作。 方式二:在 WebLogic 应用内使用 JMX Time...
在 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 语法为“分 时 日 月 周 命令”;脚本需可执行并具备相应权限。
- 每天 03:00 重启
-
脚本要点与示例
- 重启脚本 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 做滚动与清理。
- 重启脚本 webrestart.sh(先优雅停机,失败再强杀,最后启动并记录日志)
方式二 在 WebLogic 内使用 JMX Timer Service
-
适用场景
- 需要在 WebLogic Server JVM 内、以 特定 WebLogic 用户 身份执行定时任务(如定时开启/停止监控、定时触发业务 MBean 操作)。
- 任务随服务器实例生命周期运行,重启后需由应用重新注册定时器。
-
核心步骤
- 在应用中实现 JMX NotificationListener。
- 创建并配置 weblogic.management.timer.TimerMBean,设置首次触发时间与重复间隔(如“每日 09:00 触发”或“每 5 分钟触发一次”)。
- 将监听器(及可选过滤器)注册到 TimerMBean,并启动定时器。
- 在适当时机注销 TimerMBean,关闭与 MBeanServer 的连接。
- 打包并部署到 WebLogic;注意每次服务器重启后需重新实例化并注册定时器配置。
-
适用性与优势
- 由 WebLogic 托管线程执行,具备 服务器安全上下文;适合与 WebLogic 管理对象(MBean)交互的定时逻辑。
如何选择与注意事项
-
选择建议
- 运维类操作(重启、备份、清理):优先用 crontab,简单可靠、与服务器解耦。
- 业务类定时(需在 WLS 内以特定用户执行 MBean 操作):使用 JMX Timer Service,与 WebLogic 集成更紧密。
-
稳定性与风险控制
- 重启前尽量 优雅停机,设置 超时等待 与 健康检查(如端口连通性、应用就绪探针)。
- 避免频繁重启;若必须定时重启,建议安排在 低峰时段,并做好 回滚与告警。
- 凭据与合规:避免在脚本中硬编码口令,优先使用 WLST 安全登录或凭据管理工具。
- 日志与审计:统一落盘、按日切分、定期归档;对定时任务本身增加 执行日志 与 失败告警(如邮件/企业微信/钉钉机器人)。
以上两种方式可覆盖大多数在 CentOS 上对 WebLogic 的定时需求;若需要,我可以基于你的实际目录、端口与管理员账户,生成可直接使用的脚本与 crontab 条目。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上weblogic的定时任务如何设置
本文地址: https://pptw.com/jishu/779227.html
