linux如何查看端口或服务被占用情况

1. lsof命令

功能:列出打开的文件
常用选项:
-i [i] 监听的网络地址,如果没有指定,默认列出所有。
[i]来自[46][protocol][@hostname|hostaddr][:service|port]
-U 列出Unix域socket文件
-p 指定PID
-u 指定用户名或UID所有打开的文件
+D 递归搜索

实例:

列出所有打开的文件: # lsof 
查看哪个进程占用文件: # lsof /etc/passwd 
列出所有打开的监听地址和unix域socket文件: # lsof -i -U 
列出80端口监听的进程: # lsof -i:80 
列出端口1-1024之间的所有进程:
# lsof -i:1-1024 
列出所有TCP网络连接: # lsof -i tcp 
列出所有UDP网络连接: # lsof -i udp 
根据文件描述符列出打开的文件: # lsof -d 1 
列出某个目录被打开的文件: # lsof +D /var/log 
列出进程ID打开的文件: # lsof -p 5373 
打开所有登录用户名abc或user id 1234,或PID 123或PID 456: # lsof -p 123,456 -u 123,abc 
列出COMMAND列中包含字符串sshd: # lsof -c sshd

2. netstat命令

功能:打印网络连接、路由表、接口统计信息、伪装连接和多播成员
常用选项:
-r 显示路由表
-i 显示接口表
-n 不解析名字
-p 显示程序名 PID/Program
-l 显示监听的socket
-a 显示所有socket
-o 显示计时器
-Z 显示上下文
-t 只显示tcp连接
-u 只显示udp连接
-s 显示每个协议统计信息

实例:

显示所有监听: # netstat -anltu 
显示所有TCP连接: # netstat -antp 
显示所有UDP连接: # netstat -anup 
显示路由表: # netstat -r

3. ss命令

功能:比netstat更强大的socket查看工具
格式:ss [options] [ FILTER ]
常用选项:
-n 不解析名字
-a 显示所有socket
-l 显示所有监听的socket
-o 显示计时器
-e 显示socket详细信息
-m 显示socket内存使用
-p 显示进程使用的socket
-i 显示内部TCP信息
-s 显示socket使用汇总

-4 只显示IPV4的socket
-0 显示包socket
-t 只显示TCP socket
-u 只显示UDP socket
-d 只显示DCCP socket
-w 只显示RAW socket
-x 只显示Unix域socket
-f FAMILY 只显示socket族类型( unix, inet, inet6, link, netlink)
-A 查询socket {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D 将原始的TCP socket转储到文件
-F 从文件中读取过滤信息
过滤:
-o state 显示TCP连接状态信息

实例:

显示所有TCP连接: # ss -t -a 
显示所有UDP连接: # ss -u –a 
显示socket使用汇总: # ss -s 
显示所有建立的连接: # ss -o state established 
显示所有的TIME-WAIT状态: # ss -o state TIME-WAIT 
搜索所有本地进程连接到X Server: # ss -x src /tmp/.X11-unix/*

  

原文地址:https://www.cnblogs.com/yjiajia/p/13378522.html