windows下通过端口监控服务

一般大部分服务都会部署在Linux环境里,但是有些服务因为历史原因,还是采用Windows环境。此时要自动拉起这个服务,一种可行的方法是根据进程名称来拉起,这种方法在遇到多个服务的进程名称都一样时就不管用了。这种情况下,可以考虑使用端口来判断服务是否正常。假设服务监听3001端口,我们可以通过过滤netstat命令的输出来判断该端口是否处于listen状态。

判断一个端口是否在listen一般会这么写:

netstat -nao | findstr LISTEN | findstr :3001 | find /c /v ""

根据返回的结果是否为0来判断,这种写法能够处理大部分情况,但是当这台机器同时也在30010端口listen时,就会得到错误的结果。

之所以会判断错误,是因为我们其实是想寻找:listen端口是3001的行,而不是listen端口字符串包含3001的行,也就是说3001的最后一位应该是字符串的结尾了,怎么用batch脚本来表达呢?

windows下可以这么写:

netstat -nao | findstr LISTEN | findstr /r /C:":3001\>" | find /c /v ""

 Linux下可以这么写

netstat -tanp | grep LISTEN  | grep -w 3001 | wc -l

 如果只想过滤IPv4的就这样写

netstat -tanp | grep LISTEN  | grep -w tcp | grep -w 3001 | wc -l

同时,我们希望将这个结果保存到一个变量中,在Windows下要实现这个目的不像Linux下那么方便,Linux下可以使用反引号来赋值,例如

num=`netstat -tanp | grep LISTEN | grep -w 3001 | wc -l`

Windows下可以借助for语句来实现

for /f %%i in ('netstat -nao ^| findstr LISTEN ^| findstr /r /C:":3001\>" ^| find /c /v ""') do set num=%%i

关于for语句为什么这么写,可以参考这篇文章

Reading the output of a command into a batch file variable - The Old New Thing

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows监控端口死后自启动的功能是指当一个端口意外关闭或并发出现错误时,操作系统会自动尝试重新启动该端口,以确保该端口可以继续正常工作。这个功能主要是为了保证网络通信的稳定性和连续性。 当一个端口死了(也就是无法正常工作)时,Windows操作系统会监测到该端口的状态,并尝试重新启动该端口。具体的处理方式可能因不同的操作系统版本而有所不同,但基本原理是相似的。 一旦监控端口检测到死机情况,Windows会自动进行一系列的诊断和修复措施,以尽可能地恢复端口的正常工作状态。这包括重新初始化端口、关闭相关程序或服务、重启网络适配器等。如果自动修复成功,端口将会重新启动并恢复正常运行;如果自动修复不成功,操作系统可能会记录错误日志并提供相应的解决方案或建议。 这种自启动的功能可以提高系统的稳定性和可靠性,减少了人为干预的需求。同时,它也为用户提供了便利,因为他们不需要手动重启端口或重新启动整个系统来解决端口问题。 需要注意的是,虽然自启动功能可以有效地修复死掉的端口,但仍有可能出现持续死机的情况。在这种情况下,用户可能需要采取其他的措施,如升级软件、更换硬件或寻求专业技术支持等。 总之,Windows的自启动功能确保了监控端口在死机后能够自动恢复,提高了系统的可靠性和连续性,使用户能够更好地享受网络通信的便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值