Linux 杀死占用端口的所有进程

查找占用端口的程序

命令1

1
lsof -i:端口号

例如查看4007端口是否被占用:

1
lsof -i:4007
1
2
3
4
blue@blue-VirtualBox:~/桌面/Blog/blog9$ lsof -i:4007
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hexo 2564 blue 19u IPv6 39809 0t0 TCP *:4007 (LISTEN)

查找占用端口的程序的PID

1
lsof -i:端口号 -t

效果如下:

1
2
3
4
5
6
blue@blue-VirtualBox:~/桌面$ lsof -i:4007
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hexo 4924 blue 21u IPv6 56489 0t0 TCP *:4007 (LISTEN)
blue@blue-VirtualBox:~/桌面$ lsof -i:4007 -t
4924

命令2

1
netstat -tunlp | grep 端口号

例如

1
netstat -tunlp | grep 4007
1
2
3
blue@blue-VirtualBox:~/桌面/Blog/blog9$ netstat -tunlp | grep 4007
(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
tcp6 0 0 :::4007 :::* LISTEN 2564/hexo

根据PID杀死进程

1
kill -s 9 PID

例如:

1
kill -s 9 2564
1
2
3
4
blue@blue-VirtualBox:~/桌面/Blog/blog9$ lsof -i:4007
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hexo 2564 blue 19u IPv6 39809 0t0 TCP *:4007 (LISTEN)
blue@blue-VirtualBox:~/桌面/Blog/blog9$ kill -s 9 2564

一条命令杀死占用端口的所有进程

1
sudo kill -s 9 $(lsof -i:端口号 -t)

例如:

1
kill -s 9 $(lsof -i:4007 -t)

图片
效果:
图片

参考资料

https://www.cnblogs.com/showker/p/11567863.html