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

相关推荐

  • 什么是美国清关Bond?

    美国清关Bond,也被称为进口担保,是进口商在美国海关清关时必须提供的一种担保措施。它本质上是一种金融保证,用于确保进口商在履行其进口义务(如缴纳关税、遵守相关法律法规等)时的诚信和可靠性。通过提供Bond,进口商向海关证明其有能力并愿意承担与进口活动相关的经济责任。 根据使用场景和担保方式的不同,美国清关Bond主要分为以下几种类型: l 单一进口Bond:适用于偶尔进行小额进口的企业。这种Bond通常针

    2024-06-24 09:16:55
  • 波兰港口主要有哪些?

    波兰港口有22个(含内陆港),其中主要港口有3个,波兰港口主要包括:格但斯克(gdansk)、格丁尼亚(gdynia)、什切青(szczecin)。 1.格丁尼亚港(GDYNIA) 格丁尼亚港位于波兰北部沿海格但斯克(GDANSK)湾的西岸,外有海尔(HEL)半岛作为屏障,濒临波罗的(BALTIC)海的东南侧,是波兰第三大港。早在第二次世界大战时已是波罗的海沿岸最繁忙的港口之一。此后,格港确

    2023-09-29 23:13:06