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

本文介绍了一个简单的Linux shell脚本,该脚本能够通过指定端口来查找并杀死对应的进程。它使用ss命令获取正在监听特定端口的进程PID,并通过kill命令结束进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#!/bin/sh

# set -x

function get_pid_by_listened_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}')

  echo $pid
}

function kill_pid_by_listened_port() {
  pid=$(get_pid_by_listened_port $1)

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

kill_pid_by_listened_port 8080

转载于:https://www.cnblogs.com/xiaozhang9/p/6017999.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值