linux查看端口状态是否被占用和是否启动的两种方式

在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况。比如HTTP使用80端口,但当启动Apache时,却发现此端口正在使用。

这种情况大多数是由于软件冲突、或者默认端口设置不正确导致的,此时需要查看究竟哪个进程占用了端口,来决定进一步的处理方法。


方式一:

查看端口占用情况的命令:

lsof -i

出现如下结果:

COMMAND     PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd       1057  root    3u  IPv4    9131      0t0  TCP *:ssh (LISTEN)
ntpd       1065   ntp   16u  IPv4    9166      0t0  UDP *:ntp 
ntpd       1065   ntp   17u  IPv4    9170      0t0  UDP localhost:ntp 
ntpd       1065   ntp   18u  IPv4    9171      0t0  UDP iZ940p10d47Z:ntp 
这里返回了Linux当前所有打开端口的占用情况。第一段是进程,最后一列是侦听的协议、侦听的IP与端口号、状态。如果端口号是已知的常用服务(如80、21等),则会直接显示协议名称,如http、ftp、ssh等。


查看某一端口的占用情况:

lsof -i:端口号
结果如下:
COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
haproxy    5289 root    4u  IPv4 1004720      0t0  TCP *:http (LISTEN)
AliYunDun 13854 root   30u  IPv4 6489263      0t0  TCP 120.76.43.136:46673->140.205.140.205:http (CLOSE_WAIT)
AliYunDun 13889 root   12u  IPv4 6854001      0t0  TCP 120.76.43.136:53749->140.205.140.205:http (ESTABLISHED)
AliYunDun 13889 root   30u  IPv4 6489263      0t0  TCP 120.76.43.136:46673->140.205.140.205:http (CLOSE_WAIT)
AliHids   19419 root   30u  IPv4 3310186      0t0  TCP 120.76.43.136:33228->140.205.140.205:http (CLOSE_WAIT)
这里显示出80号端口正在被haproxy使用,状态是listen


结束占用端口的进程:

killall 进程名
虽然我们不建议用这种本末倒置的方法来解决冲突问题,但某些情况下还是可以直接结束掉占用进程的(比如重启Apache时进程没有完全退出,导致重启失败)


方式二

使用命令查看包含指定端口的进程

netstat -apn|grep <端口号>
例如:
Linux代码
netstat -apn|grep 80

找到进程号以后,再使用以下命令查看详细信息:

ps -aux|grep <进程号>
然后采用kill命令结束进程
kill -9 进程号


感谢您的阅读,希望对您有帮助,本文版权归 #惊讶# 所有

评论 (0)