開發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服務器
逐行命令說明一下:分佈式
利用netstat和findStr的查找指定端口並將結果寫入到臨時文件。code
把臨時文件內容讀到變量msg中。進程
靜默刪除臨時文件。資源
截取最末尾的5個字符,即進程ID(PID)。開發
判斷是否查找到進程,強行關閉指定PID的進程。部署
由於dubbo的端口都是5位,因此pid=%msg:~-5%
這裏寫的是-5,若是是4位就得寫%msg:~-4%
。變量
須要特別注意,若是端口位數少,有可能會致使在第一步找到多個進程,從而發生誤關閉。在這裏建議能用Linux就別用Windows :)dubbo