一、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