Linux连接久久不能释放的现象不常见,但偶然也会发生。进程虽不复存在,但是客户端的连接咬定青山不放松,死活也不肯吐出连接,导致重启进程时因操作系统判断监听端口被占用而无法启动。常规手段已经束手无策,这时候不得不想办法杀连接。
一、tcpkill介绍
tcpkill是网络嗅探工具包dsniff其中提供的一个利器,用于杀掉TCP连接。
1.安装tcpkill
yum install dsniff
2.使用
-i 指定网口
-9 强制杀掉
host 指定外部IP
port 指定外部端口
3.示例 杀掉某个外部连接进来的端口
tcpkill -9 host 192.168.1.100
tcpkill -i ens33 -9 port 80
tcpkill -i ens33 -9 port 443
tcpkill -i any -9 host 192.168.100.11
tcpkill -i any host 192.168.100.11
tcpkill -i any port 5432
可以使用如下命令:
IP=192.0.2.1
lsof -i TCP:$IP | awk 'NR!=1 {print $2}' | xargs kill -9
说明:如果不存在任何建立了连接的进程,那么 lsof 命令的输出是空的。
IP 是 shell 变量,表示要断开连接的 IP 地址。
lsof -i TCP:$IP 会列出所有与指定 IP 建立的 TCP 连接。
awk 'NR!=1 {print $2}' 会从 lsof 的输出中提取出进程 ID。
xargs kill -9 会杀死所有进程 ID。
标签:IP,tcpkill,TCP,host,lsof,实用程序,连接
From: https://blog.51cto.com/feirenraoyuan/6221822