Linux获取监听指定端口的进程PID

在 Linux 下经常需要杀死(重启)监听某端口的进程, 因此就写了一个小脚本, 通过 ss 命令获取监听制定端口的进程 PID, 然后通过 kill 命令结束掉进程:

#!/bin/sh

# set -x

[[ $# -lt 1 ]] && { echo 'param error: must have one param(port)'; exit -1; }
[[ $# -gt 1 ]] && { echo 'param error: only support one param(port)'; exit -1; }

function get_pid_by_listen_port() {
        pattern_str="*:$1\b"
        pid=$(ss -n -t -l -p | grep "$pattern_str" | column -t | awk -F ',' '{print $(NF-1)}')

        # 当版本号为 "ss utility, iproute2-ss161009" 时, ss 命令输出格式为:
        #              LISTEN  0  5  *:8000  *:*  users:(("python2.7",pid=7130,fd=3))
        # 此时需要进一步处理, 只获取进程 PID 值.
        [[ $pid =~ "pid" ]] && pid=$(echo $pid | awk -F '=' '{print $NF}')

        echo $pid
}

pid=$(get_pid_by_listen_port $1)
if [ -n "$pid" ]
then
        echo "find pid: $pid, kill it..."
        kill $pid
else
        echo 'cannot find listened port: '$1
        exit -1
fi

如果只是想放入 .bashrc 或 .zshrc 的话, 可以使用下面这个版本:

function kill_pid_by_listen_port() {
        [[ $# -lt 1  ]] && { echo 'param error: must have one param(port)'; return -1;  }
        [[ $# -gt 1  ]] && { echo 'param error: only support one param(port)'; return -1;  }

        pattern_str="*:$1\b"
        pid=$(ss -n -t -l -p | grep "$pattern_str" | column -t | awk -F ',' '{print $(NF-1)}')

        # 当版本号为 "ss utility, iproute2-ss161009" 时, ss 命令输出格式为:
        #              LISTEN  0  5  *:8000  *:*  users:(("python2.7",pid=7130,fd=3))
        # 此时需要进一步处理, 只获取进程 PID 值.
        [[ $pid =~ "pid" ]] && pid=$(echo $pid | awk -F '=' '{print $NF}')

        [[ -n "$pid" ]] && { "find pid: $pid, kill it..." }
        [[ -n "$pid" ]] || { echo "not found listened port: $1" }
}

想了解更多关于Linux获取监听指定端口的进程PID的内容,请扫微信
或微信搜索jiemingpan

本文链接:http://www.soufuzi.com/jianzhan/2989

(0)
上一篇 2025-04-08 00:59:27
下一篇 2025-04-08 00:59:27

相关推荐

  • 什么是Web服务器

    web服务器含义 Web服务器一般指网站服务器,网络服务器是网络环境下为客户提供某种服务的专用计算机。Web 服务器就是提供web服务的服务器,搜索引擎百度是一个典型的web服务器。一般web server是提供的HTTP服务,所以我们的网站都是http:// 开头的,不过现在安全性提高都加了SSL 所以都是https://开头. 常用的web服务器有哪些? 1.微软的IIS IIS(Internet信息服务)英文Intern

    2023-05-25 02:50:14
  • 非洲的主要港口有哪些?

    1.南非德班港 这是非洲最繁忙的港口。德班是南部非洲最大的货运港口之一,拥有至少 59 个泊位。时至今日,港口仍在不断扩大和开发新领域。该港口与关键工业区相连。 有两只船队,其中一只由新人民军控制。这个港口每月有超过 880 艘船使用,而且这个数字每年都在增加。 2.南非理查兹湾港 理查兹港是全世界最大的港口之一,已有 40 年左右的历史!它是国际领先的煤炭出口码头,靠近德班港。 该地区曾经是一个小渔

    2024-09-11 21:21:12