golang查端⼝号占⽤的进程号golang官⽅包:
os
⽀持获取当前进程pid并kill、但是仅仅限于获取当前进程pid
FindProcess().Kill()
os.Getpid()
基础⽤法;但是却没有提供依据端⼝号获取对应的pid,所以还是执⾏shell指令对结果集进⾏过滤获取pid // 获取8299端⼝对应进程号并kill
processInfo := exec.Command("/bin/sh", "-c",`lsof -i:8299 | awk '{print $2}' | awk 'NR==2{print}'`)
if pid, err := processInfo.Output(); err != nil {
笔记本电脑如何分区fmt.Println(err.Error())
}else{
fmt.Println(string(pid))
processExit := exec.Command("/bin/sh", "-c",`kill `+string(pid))
取店名大全if _, err := processExit.Output(); err != nil {
拍一拍怎么设置fmt.Println(err.Error())
}
}
and
// 传⼊查询的端⼝号
// 返回端⼝号对应的进程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
}
端⼝检测:
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
}
参考博客:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论