一、Linux查看端口占用情況
1、lsof(list open files)列出當前系統打開文件
查看指定端口號語法格式:
lsof -i:端口號
如果命令找不到
[root@bogon ~]# lsof -i:1521
-bash: lsof: command not found
請安裝該命令
# yum install lsof -y
# lsof -i:7075
[root@localhost ~]# lsof -i:7075 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME docker-pr 17394 root 4u IPv6 75775 0t0 TCP *:7075 (LISTEN)
查看所有端口
# lsof -i
[root@localhost ~]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1105 root 3u IPv4 18473 0t0 TCP *:ssh (LISTEN) sshd 1105 root 4u IPv6 18482 0t0 TCP *:ssh (LISTEN) master 1904 root 13u IPv4 19162 0t0 TCP localhost:smtp (LISTEN) master 1904 root 14u IPv6 19163 0t0 TCP localhost:smtp (LISTEN) openvpn 2411 root 6u IPv4 21972 0t0 TCP 192.168.1.56:openvpn (LISTEN) sshd 3172 root 3u IPv4 33620 0t0 TCP 192.168.1.56:ssh->192.168.2.113:53585 (ESTABLISHED)
COMMAND(進程的名稱)
PID(進程的標識符)
USER(進程所有者)
FD(文件描述符)
TYPE(文件類型)
SIZE/OFF(文件大小)
DEVICE(指定磁盤名稱)
NODE(索引節點)
NAME(打開文件的確切名稱)
2、netstat
netstat -tunlp 用於顯示 tcp,udp 的端口和進程等相關情況
netstat 查看端口占用語法格式:
netstat -tunlp | grep 端口號
- -t (tcp) 僅顯示tcp相關選項
- -u (udp)僅顯示udp相關選項
- -n 拒絕顯示別名,能顯示數字的全部轉化為數字
- -l 僅列出在Listen(監聽)的服務狀態
- -p 顯示建立相關鏈接的程序名
[root@localhost ~]# netstat -tunlp | grep 7075 tcp6 0 0 :::7075 :::* LISTEN 17394/docker-proxy [root@localhost ~]# [root@localhost ~]# netstat -tunlp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 19356/mysqld [root@localhost ~]# [root@localhost ~]# netstat -tunlp | grep 1521 tcp6 0 0 :::1521 :::* LISTEN 17470/docker-proxy [root@localhost ~]# [root@localhost ~]# netstat -tunlp | grep 1525 [root@localhost ~]# [root@localhost ~]# netstat -tunlp | grep 1522 tcp6 0 0 :::1522 :::* LISTEN 17436/docker-proxy [root@localhost ~]#
在查到端口占用的進程后,如果你要殺掉對應的進程可以使用 kill 命令:
kill -9 PID
如上實例,我們看到 7075 端口對應的 PID 為 17394,使用以下命令殺死進程:
# kill -9 17394
顯示網卡列表
# netstat -i
[root@localhost ~]# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg docker0 1500 185610 0 0 0 215874 0 0 0 BMRU ens18 1500 6242072 302310 0 0 653911 0 0 0 BMRU lo 65536 46 0 0 0 46 0 0 0 LRU veth5a87904 1500 0 0 0 0 24 0 0 0 BMRU vethb1d0229 1500 0 0 0 0 24 0 0 0 BMRU vethed2e0ba 1500 15711 0 0 0 16094 0 0 0 BMRU vethee02449 1500 98501 0 0 0 127243 0 0 0 BMRU [root@localhost ~]#
3、ps(用於顯示當前進程的狀態)
使用PS命令查看和控制進程
顯示本用戶的進程
# ps
[root@localhost ~]# ps PID TTY TIME CMD 30059 pts/0 00:00:00 bash 31149 pts/0 00:00:00 ps
顯示所有用戶的進程
# ps -au
[root@localhost ~]# ps -au USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 3319 0.0 0.0 110092 860 tty1 Ss+ 07:28 0:00 /sbin/agetty --noclear tty1 linux root 21611 0.0 0.0 115408 1912 pts/0 Ss 16:13 0:00 -bash root 21640 0.0 0.0 155332 1776 pts/0 R+ 16:15 0:00 ps -au
顯示所有進程和其狀態
# ps aux
顯示指定進程和其狀態
# ps -aux | grep 服務
[root@localhost ~]# ps -aux | grep httpd root 31122 0.0 0.0 112680 696 pts/0 S+ 14:01 0:00 grep --color=auto httpd [root@localhost ~]# [root@localhost ~]# ps -aux | grep vsftpd root 31124 0.0 0.0 112680 696 pts/0 S+ 14:01 0:00 grep --color=auto vsftpd [root@localhost ~]#
4、pidof
(查看服務的pid)
# pidof nginx
[root@localhost ~]# ps aux | grep nginx root 11579 0.0 0.0 112704 956 pts/2 S+ 16:45 0:00 grep --color=auto nginx root 27326 0.0 0.0 56712 1264 ? Ss Jun26 0:00 nginx: master process /usr/sbin/nginx root 27327 0.0 0.0 57252 2652 ? S Jun26 0:00 nginx: worker process [root@localhost ~]# [root@localhost ~]# netstat -tunlp | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27326/nginx [root@localhost ~]# [root@localhost ~]# pidof nginx 27327 27326
二、Windows下查看端口占用情況
1、netstat
查找所有運行的端口
C:\Users\Administrator> netstat -ano
查看被占用端口對應的PID
語法格式:
netstat -ano | findstr “端口號”
C:\Users\Administrator> netstat -ano | findstr "9558"
最后一位數字就是PID,這里是8112
2、tasklist
查看指定PID的進程
語法格式:
tasklist | findstr “PID”
C:\Users\Administrator>tasklist | findstr "8112"
3、taskkill(結束進程)
強制(/F參數)殺死pid為8112的所有進程包括子進程(/T參數)
taskkill /T /F /PID 8112
也可小寫
taskkill /f /t /PID 8112
或者
taskkill /f /t /im 程序名.exe
taskkill /fi “PID eq 5052”
end