欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang端口占用檢測的使用

 更新時間:2021年03月26日 10:30:20   作者:csd_ct  
這篇文章主要介紹了golang端口占用檢測的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

         在運維開發(fā)的過程中,經(jīng)常碰到這樣的情況:啟動某個應用前,需要先檢測一下端口是否被其他的應用占用了,若占用了,能否得到占用進程的PID。后續(xù)可以根據(jù)這個PID,查找是哪個應用占據(jù)這端口,然后KILL掉。非常簡單的需求,思路是:

利用 netstat 命令獲取當前的相關端口號的PID,然后正則表達式過濾出相關的PID即可

netstat -ano | findstr 8099

輸出如下:

以windows 系統(tǒng)下為例,linux系統(tǒng)下,修改相關參數(shù)即可。代碼如下:

// 傳入查詢的端口號
// 返回端口號對應的進程PID,若沒有找到相關進程,返回-1
func portInUse(portNumber int) int {
	res := -1
	var outBytes bytes.Buffer
	cmdStr := fmt.Sprintf("netstat -ano -p tcp | findstr %d", portNumber)
	cmd := exec.Command("cmd", "/c", cmdStr)
	cmd.Stdout = &outBytes
	cmd.Run()
	resStr := outBytes.String()
	r := regexp.MustCompile(`\s\d+\s`).FindAllString(resStr, -1)
	if len(r) > 0 {
		pid, err := strconv.Atoi(strings.TrimSpace(r[0]))
		if err != nil {
			res = -1
		} else {
			res = pid
		}
	}
	return res
}

補:golang 實現(xiàn)端口掃描

對端口進行掃描基于連接,在go中我們可以使用net.Dial進行判斷,如果返回的結(jié)果沒有錯誤,那么這個端口就應該是打開的,如果返回了錯誤,那么可以說明這個端口是關閉的,代碼如下

func ScanPort(protocol string, hostname string, port int) bool {
 fmt.Printf("scanning port %d \n", port)
 p := strconv.Itoa(port)
 addr := net.JoinHostPort(hostname, p)
 conn, err := net.DialTimeout(protocol, addr, 3*time.Second)
 if err != nil {
 return false
 }
 defer conn.Close()
 return true
}

到此這篇關于golang端口占用檢測的使用的文章就介紹到這了,更多相關golang端口占用檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang命令行進行debug調(diào)試操作

    Golang命令行進行debug調(diào)試操作

    今天小編就為大家分享一篇關于,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 基于golang的簡單分布式延時隊列服務的實現(xiàn)

    基于golang的簡單分布式延時隊列服務的實現(xiàn)

    這篇文章主要介紹了基于golang的簡單分布式延時隊列服務的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Go語言基礎單元測試與性能測試示例詳解

    Go語言基礎單元測試與性能測試示例詳解

    這篇文章主要為大家介紹了Go語言基礎單元測試與性能測試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步
    2021-11-11
  • 詳解golang channel有無緩沖區(qū)的區(qū)別

    詳解golang channel有無緩沖區(qū)的區(qū)別

    這篇文章主要給大家介紹了golang channel有無緩沖區(qū)的區(qū)別,無緩沖是同步的,有緩沖是異步的,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2024-01-01
  • Golang實現(xiàn)Redis網(wǎng)絡協(xié)議實例探究

    Golang實現(xiàn)Redis網(wǎng)絡協(xié)議實例探究

    這篇文章主要為大家介紹了Golang實現(xiàn)Redis網(wǎng)絡協(xié)議實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Go?1.21.0?新增結(jié)構(gòu)化日志記錄標準庫log/slog使用詳解

    Go?1.21.0?新增結(jié)構(gòu)化日志記錄標準庫log/slog使用詳解

    這篇文章主要為大家介紹了Go?1.21.0?新增結(jié)構(gòu)化日志記錄標準庫log/slog使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Golang正整數(shù)指定規(guī)則排序算法問題分析

    Golang正整數(shù)指定規(guī)則排序算法問題分析

    這篇文章主要介紹了Golang正整數(shù)指定規(guī)則排序算法問題,結(jié)合實例形式分析了Go語言排序算法操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • Go語言轉(zhuǎn)換所有字符串為大寫或者小寫的方法

    Go語言轉(zhuǎn)換所有字符串為大寫或者小寫的方法

    這篇文章主要介紹了Go語言轉(zhuǎn)換所有字符串為大寫或者小寫的方法,實例分析了ToLower和ToUpper函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • go同步原語Phaser和Barrier區(qū)別

    go同步原語Phaser和Barrier區(qū)別

    這篇文章主要為大家介紹了通過java講解go同步原語Phaser和Barrier區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Golang filepath包常用函數(shù)詳解

    Golang filepath包常用函數(shù)詳解

    本文介紹與文件路徑相關包,該工具包位于path/filepath中,該包試圖與目標操作系統(tǒng)定義的文件路徑兼容。本文介紹一些常用函數(shù),如獲取文件絕對路徑,獲取文件名或目錄名、遍歷文件、分割文件路徑、文件名模式匹配等函數(shù),并給具體示例進行說明
    2023-02-02

最新評論