0x1 服务异常
某公司为规范办公室安全管理,为各办公室安装门禁并给员工制定不同的进出权限。
但近期运维发现更新权限后并不能与门禁控制器同步,导致权限异常。
0x2 排查问题,定位问题
出现同步问题后首先去设备监控页面检查设备同步状态,在设备状态页面提示数据中心检测服务未启动。
如下图
在服务器上查看服务状态,这货“ZKECO Data Comm Center Service”果然已经罢工了
0x3 制定解决问题的方法
启动这个服务后问题立刻解决,于是想着有什么办法能够一直检测服务状态类似“服务看家狗”这样的东东。
尝试着使用WIN自带的批处理来解决,就必须为服务添加一个判断状态。全部代码如下:
@echo off
::检测服务运行状态,若运行中则不处理,若停止则启动
for /f "skip=3 tokens=4" %%i in ('sc query ZKECODataCommCenterService') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
echo 已经发现该服务在运行。
) else (
echo 该服务现在处理停止状态。
::自行设定服务名
net start ZKECODataCommCenterService
)
pause>nul
通过判断“ZKECODataCommCenterService”运行状态,运行状态等于RUNNING时服务正常,如发现状态不等于RUNNING时判断服务停止则执行“net start ZKECODataCommCenterService”动作 启动服务。
最后再把这个批处理加入到任务计划中每隔1小时检查一次,这样就保证了服务的可用性。
运行测试如下:
0x4 假装有总结
这次的问题虽然通过批处理得到了很好的解决,但是由于时间紧迫,导致服务停止的根本原因并未查明。
同时有了上面批处理的思维,后期可以通过修改让其变得更加强大,多服务监测也不是不可能!
最后,如果加入到任务计划中需要关闭批处理的显示窗,此时需要注释掉暂停命令,像这样“::pause>nul”。
9 comments
我觉得你应该发一点有趣的幽默内容了
没有写段子的天赋啊
运维大神
混口饭吃
不过你这个页面很卡唉
现在主机托管在香港的国内有些地方卡,以后想办法解决吧
香港主机延迟应该不高啊,或许你可以用oss或者cdn缓存资源
没有备案的连国内的cdn都用不了,还是等以后有时间迁到国内吧
嗯嗯,国内的主机也是挺便宜的