目 录
[(1)、lsof -i :80](#(1)、lsof -i :80)
[(2)、grep -v "PID"](#(2)、grep -v "PID")
(3)、awk '{print "kill -9",2}'](#(3)、awk '{print "kill -9",
一、需求
在Linux系统中,端口80通常用于HTTP服务,如Apache或Nginx等Web服务器。如果某个进程或应用程序意外地占用了这个端口,或者出现了性能问题、安全问题等,管理员可能需要快速终止这些进程以恢复服务的正常运行。
二、解决方法
1、解决思路
通过lsof -i :80命令,可以列出所有正在使用端口80的进程。然后通过grep找到PID,在通过awk调用kill命令,终止掉这些进程。
2、命令
考虑使用lsof 、grep结合awk,形成组合命令,实现需求,如下:
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
三、实例演示和命令解释
1、实例演示
(1)查看目前有哪些在TCP端口80监听的进程
[root@ecs-52a1 nginx_web]#
[root@ecs-52a1 nginx_web]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx.out 3133592 root 9u IPv4 634115274 0t0 TCP *:80 (LISTEN)
nginx.out 3133593 nobody 3u IPv4 634134827 0t0 TCP ecs-52a1:80->122.193.66.67:pcmk-remote (ESTABLISHED)
nginx.out 3133593 nobody 9u IPv4 634115274 0t0 TCP *:80 (LISTEN)
nginx.out 3133593 nobody 14u IPv4 634134828 0t0 TCP ecs-52a1:80->122.193.66.67:40831 (ESTABLISHED)
nginx.out 3133593 nobody 15u IPv4 634139359 0t0 TCP ecs-52a1:80->47.122.26.94:40704 (ESTABLISHED)
[root@ecs-52a1 nginx_web]#
(2)、使用命令
[root@ecs-52a1 nginx_web]#
[root@ecs-52a1 nginx_web]# lsof -i:80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
[root@ecs-52a1 nginx_web]#
(3)、查看效果
[root@ecs-52a1 nginx_web]#
[root@ecs-52a1 nginx_web]# lsof -i:80
[root@ecs-52a1 nginx_web]#
[root@ecs-52a1 nginx_web]#
可见,所用监听的进程都被删掉了。
2、命令解释
本命令的作用是:查找并终止监听在 TCP 端口 80 上的所有进程。
(1)、lsof -i :80
用于列出当前系统打开的文件。当使用 -i 选项时,它会列出所有网络连接,包括监听的和已建立的。
-i :80 参数意味着我们只对监听在 TCP 端口 80 上的网络连接感兴趣。
(2)、grep -v "PID"
grep 命令用于搜索文本,-v 选项表示反向匹配,即只输出不匹配指定模式的行。
在这里,grep -v "PID" 会过滤掉包含 "PID" 的行。通常,lsof 命令的输出中会包含一列显示进程 ID(PID)的列,但在这个命令组合中,我们不关心 PID,所以我们使用 grep -v "PID" 来移除它。
(3)、awk '{print "kill -9",$2}'
awk 是一个文本处理工具,它可以基于模式对文本进行扫描和处理。
在这个命令中,awk 会处理每一行输入,并输出一个新的字符串。{print "kill -9",$2} 表示对每一行,它都会打印出 "kill -9" 和该行的第二列。
由于 lsof -i 命令的输出中,第二列通常是进程 ID(PID),所以这个命令会生成一系列 kill -9 <PID> 命令,其中 <PID> 是监听在端口 80 上的进程的进程 ID。
kill -9 是一个命令,用于强制终止一个进程。-9 选项发送一个 SIGKILL 信号给进程,这个信号不能被进程捕获或忽略,所以它总是会立即终止进程。
(4)、sh
sh 是 shell 的命令,通常用于执行脚本或命令字符串。
在这里,sh 会执行前面 awk 命令生成的 kill -9 <PID> 命令,从而强制终止所有监听在 TCP 端口 80 上的进程。
四、扩展
在实际使用中,你可稍微做些修改,就可以适合您的应用了。比如,若你想终止掉2680的tcp端口的所用进程,你可以用如下命令即可:
lsof -i:2680|grep -v "PID"|awk '{print "kill -9",$2}'|sh