前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >根据端口杀进程

根据端口杀进程

原创
作者头像
安宁
修改2020-07-06 10:39:42
7300
修改2020-07-06 10:39:42
举报

以下脚本主要在 mac 上调试,centos7 上测试也可行,其他环境没有试过。

kill_by_port.sh

代码语言:javascript
复制
#!/bin/bash

#第 1 个参数为端口,默认为 8761
port=${1-8761}
echo "0.杀掉端口[$port]对应的进程"

#查询端口相关的进程信息,返回字符串
result=$(lsof -i:"$port") || exit
echo "1.根据端口查询进程: $result"

#将字符串转换为数组
array=($result)

#获取第 10 个参数为进程号
pid=${array[10]}
echo "2.根据进程查询结果取得进程号:$pid"

#如果取得进程号则杀掉
if [ -n "$pid" ]; then
  echo "3.杀掉进程$pid"
  kill -9 $pid
fi

进程号

为什么第 10 个参数是进程号,详细看一下 lsof -i:8761 的输出:

代码语言:javascript
复制
$ lsof -i:8761
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java      398 xiayx    9u  IPv6 0x20945d935f29749b      0t0  TCP localhost:8761->localhost:63519 (ESTABLISHED)
java      398 xiayx   10u  IPv6 0x20945d935f29439b      0t0  TCP localhost:63346->localhost:8761 (ESTABLISHED)
java      398 xiayx   14u  IPv6 0x20945d935e57723b      0t0  TCP *:8761 (LISTEN)
java      398 xiayx   22u  IPv6 0x20945d935f2955fb      0t0  TCP localhost:8761->localhost:63346 (ESTABLISHED)
java    41642 xiayx  149u  IPv6 0x20945d935f296e7b      0t0  TCP localhost:63519->localhost:8761 (ESTABLISHED)

从左到右从上到下数,COMMAND 是第 1 个,PID 是第 2 个,数到 398 就是第 10 个。理论上不完全准确,应该取第 3 行监听状态中的 PID。

下载脚本

根据端口杀进程

使用示例

下载脚本后,进入脚本所在目录,执行以下命令:

代码语言:javascript
复制
#赋予执行权限
$ chmod 777 ./kill_by_port.sh
#杀掉 8080 对应的进程
$ ./kill_by_port.sh 8080

源码地址

学习 shell 命令

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进程号
  • 下载脚本
  • 使用示例
  • 源码地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档