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

相关推荐

  • 零基础怎么做网站SEO优化?

    1、代码理解         了解简单的HTML代码。不要一看到代码就头疼。HTML代码在语言上比较简单。即使是零基础的人,也能在一周内初步掌握。   2、建站模板         要知道怎么建站,当然不要求你是我的主流开源程序,只要你能把应用主机建在基础模板上就可以了。   3、编辑能力 要有一定

    2023-11-07 08:43:32
  • 什么是关键词

    一、关键词的概念 SEO真正的价值是带来定向客户,定向客户是通过搜索一些词语来到我们网站的,这些客户要搜索的词就是关键词。 简单来讲关键词就是将来您的潜在客户要搜索的词语,所有我们潜在客户在搜索引擎上面想要搜的词我们都可以称之为关键词。 二、关键词的分类 1.主关键词 一般我们用最高权重页面去优化的词我们叫做主关键词,是我们将来的网站客户搜索量最大,商业价值也最大的词。 2.长尾关键词 跟我们主关键词相关,但是搜索量没有主关键词大的一

    2023-01-11 19:03:56