有时候,我们虽然关闭了执行程序,但是端口还是在占用,下面以888为例,列出查看端口的占用的方法和解除端口占用的情况。
解决方法:
查找被占用的端口
netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22000 0.0.0.0:* LISTEN
tcp6 0 0 :::21 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
tcp6 0 0 :::22000 :::* LISTEN
netstat -tln | grep 888
root@ebs-31911:~# netstat -tln | grep 888
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
netstat -tln 查看端口使用情况,而netstat -tln | grep 80 则是只查看端口80的使用情况
查看端口属于哪个程序?端口被哪个进程占用
lsof -i :888
root@ebs-31911:~# lsof -i:888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1224 root 21u IPv4 10379 0t0 TCP *:888 (LISTEN)
nginx 1227 www 21u IPv4 10379 0t0 TCP *:888 (LISTEN)
杀掉占用端口的进程
找到进程ID,就是PID。执行:kill -9 进程id
例如:
kill -9 1224
这个时候该进程占用的端口就被释放了