Jenkins自動關閉運行中dubbo的腳本

開發Dubbo分佈式服務,爲了提升資源利用率。準備使用Jenkins作自動部署。手頭資源有限,只有一臺windows服務器給開發使用。在windows環境下,啓動JAVA程序沒法獲取進程ID(PID)。
無心中發現netstat命令,根據端口能查找到進程ID,因而有了下面的黑科技批處理。windows

@echo off
netstat -aon|findStr "22879">pid.tmp
set /p msg=<pid.tmp
del /q pid.tmp
set pid=%msg:~-5%
if "%msg%"=="" (echo no) else (taskkill /f /pid %pid%)

調用方法: xxx.bat yyyyy服務器

逐行命令說明一下:分佈式

  1. 利用netstat和findStr的查找指定端口並將結果寫入到臨時文件。code

  2. 把臨時文件內容讀到變量msg中。進程

  3. 靜默刪除臨時文件。資源

  4. 截取最末尾的5個字符,即進程ID(PID)。開發

  5. 判斷是否查找到進程,強行關閉指定PID的進程。部署

由於dubbo的端口都是5位,因此pid=%msg:~-5%這裏寫的是-5,若是是4位就得寫%msg:~-4%變量

須要特別注意,若是端口位數少,有可能會致使在第一步找到多個進程,從而發生誤關閉。在這裏建議能用Linux就別用Windows :)dubbo

相關文章
相關標籤/搜索