随手记录,写了一个自动化监控重启Arcgis站点脚本

2022.10.14更新内容补充 curl配置、增加loop脚本、删除test.cmd的等待操作

环境依赖

curl 用来检测站点比较好用
下载Windows版本 https://curl.se/windows/

初步想法

两个脚本运行在Arcgis站点本机,检测本机的6080端口是否通,如果不通的话就:

  • 关闭Arcgis Server服务
  • 干掉没有关掉的ArcSOC.exe僵尸进程
  • 启动Arcgis Server服务
  • 过5分钟以后再进行第二次检测
    总共逻辑只有这样的五步
不通
开始下一次检测
检测本机的6080端口是否通
关闭Arcgis Server服务
结束
干掉没有关掉的ArcSOC.exe僵尸进程
启动Arcgis Server服务
等待5分钟

curl环境配置

curl包下载完以后,将curl包解压到C盘根路径下,在环境变量中加入一条

C:\curl-7.84.0_9-win64-mingw\bin

这样就可以在cmd中使用curl命令了

loop.cmd 循环脚本

@echo off
:start
start C:\test.cmd
echo wait 5 mins
TIMEOUT /T 300 /NOBREAK
goto start

该脚本可以放在服务器的任意目录下

test.cmd 主脚本

@echo off
SET "URL=http://127.0.0.1:6080/arcgis/rest/"
curl -s -o nul -v --connect-timeout 10 -X POST -w "%%{http_code}" "%URL%">C:\return.txt
SET /P HTTP=<C:\return.txt
if "%HTTP%" == "200" (
    echo OK
) else (
    echo %HTTP%
    start C:\reboot_arcsrv.cmd
)
exit

由于loop.cmd里写死test.cmd的位置,该脚本需要放置在服务器的C盘根目录下

reboot_arcsrv.cmd 重启脚本

net stop "Arcgis Server"
ping 127.0.0.1 -n 5
taskkill /F /IM ArcSOC.exe
ping 127.0.0.1 -n 5
net start "Arcgis Server"

由于test.cmd里写死reboot_arcsrv.cmd的位置,该脚本需要放置在服务器的C盘根目录下

目前仍然存在的问题

curl的超时问题是没法解决的,应该是windows下curl的一个bug

# --connect-timeout 10 设置了超时时间为10秒,但是从未生效
curl -s -o nul -v --connect-timeout 10 -X POST -w "%%{http_code}" "%URL%">C:\return.txt

如果一个请求返回时间过长照理应当结束请求,但是curl做不到,这个后续必须优化。

未来优化的展望

最近学到了Python3中requests库的用法,准备使用requests重写一下
之前在文章SRE从踩坑到牛逼(一)利用Python+CMD进行java应用的监控和重启中使用了Python官方库urllib进行连接测试,也会在新的Python脚本里面使用,对比一下requests urllib的差异,到时候会写一篇 SRE从踩坑到牛逼(二) 敬请期待

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值