1. 查看端口占用狀況的命令:lsof -inginx
[root@www ~]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME nginx 2333 root 6u IPv4 6242 TCP *:http (LISTEN) nginx 2334 www 6u IPv4 6242 TCP *:http (LISTEN) sshd 2349 root 3u IPv6 6283 TCP *:ndmp (LISTEN) sshd 2349 root 4u IPv6 6286 TCP *:ssh (LISTEN)
這裏返回了Linux當前全部打開端口的佔用狀況。shell
第一段是進程,最後一列是偵聽的協議、偵聽的IP與端口號、狀態。app
若是端口號是已知的經常使用服務(如80、21等),則會直接顯示協議名稱,如http、ftp、ssh等。ssh
2. 查看某一端口的佔用狀況: lsof -i:端口號tcp
[root@www ~]# lsof -i:21 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME pure-ftpd 2651 root 4u IPv4 7047 TCP *:ftp (LISTEN) pure-ftpd 2651 root 5u IPv6 7048 TCP *:ftp (LISTEN)
這裏顯示出21號端口正在被pure-ftpd使用,狀態是listen。spa
3. 查看某進程佔用的端口號code
netstat -anp [root@www ~]# netstat -anp | grep syslog udp 0 0 0.0.0.0:514 0.0.0.0:* 31483/syslogd
4. 查看某端口被佔用的進程進程
[root@nbatest ~]# netstat -altp |grep 9999 tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 16315/gate_applicat
5. 一進程肯定佔用某一tcp端口,以下命令能夠殺掉該進程。io
kill -9 $(netstat -tlnp|grep 9999|awk '{print $7}'|awk -F '/' '{print $1}')
6. 結束佔用端口的進程:killall 進程名class
雖然咱們不建議用這種本末倒置的方法來解決衝突問題,
但某些狀況下仍是能夠直接結束掉佔用進程的(好比重啓Apache時進程沒有徹底退出,致使重啓失敗)
[root@www ~]# killall application
這樣,全部的application進程都會被結束掉。