linux如何查看端口号:常用命令实操
linux如何查看端口号,主流可选ss、netstat、lsof三条命令,现代Linux发行版优先使用ss,默认预装、查询速度更快;netstat需要手动安装net-tools软件包,适合老旧系统;lsof侧重按进程查询端口,需要安装对应工具,查询耗时相对更长。你执行命令时,加上sudo权限才能完整看到进程ID与程序名称,不加权限会出现部分进程信息无法展示的情况,Alpine轻量容器环境中lsof的网络端口查询功能存在缺失,不建议在该环境使用lsof查看端口。
linux如何查看端口号:ss命令实操
ss是Linux内核原生配套工具,依托netlink接口读取套接字信息,在服务器高并发连接场景下,查询效率明显优于netstat。查看全部TCP、UDP监听端口并显示进程,执行命令sudoss-tulnp;参数t代表TCP端口,u代表UDP端口,l只筛选监听状态端口,n不解析域名加快输出,p展示进程信息。如果你只需要查询单个端口,可追加过滤,sudoss-tulnp|grep:8080,直接返回占用8080端口的程序与进程号。输出结果里,State列标记端口状态,Listen代表正在监听,ESTAB代表已经建立网络连接。
优先选ss,适配新版系统。
linux如何查看端口号:netstat命令实操
netstat属于net-tools工具集,CentOS8、Ubuntu20.04及更新版本默认不再预装,需要执行安装指令才能使用。Debian、Ubuntu系列安装命令sudoaptinstallnet-tools,RHEL、CentOS系列使用sudoyuminstallnet-tools。查看监听端口完整命令sudonetstat-tulnp,参数含义和ss基本一致,查询单端口示例sudonetstat-tulnp|grep3306。netstat读取数据依赖遍历/proc目录,服务器连接数量很大时,查询速度会明显变慢,输出延迟升高。该命令是运维老文档高频写法,很多新手会直接复制,但在新版系统会提示commandnotfound,遇到这类报错直接切换ss即可。
linux如何查看端口号:lsof命令实操
lsof全称listopenfiles,Linux中一切资源都视作文件,网络套接字也属于打开文件,因此可以用来检索端口占用进程。查看所有网络端口命令sudolsof-i,筛选指定端口sudolsof-i:22,返回结果直接展示进程名称、PID、用户。Ubuntu系统安装sudoaptinstalllsof,CentOS系统sudoyuminstalllsof。lsof优势是可以结合进程、用户多维度筛选,适合排查哪个程序意外占用端口;缺点是遍历所有打开文件,系统文件句柄数量巨大时,查询耗时会显著增加。
| 命令 | 预装情况 | 查询速度 | 适用场景 |
|---|---|---|---|
| ss | 新版Linux默认预装 | 较快 | 常规端口巡检,高并发服务器 |
| netstat | 新版系统需手动安装 | 中等 | 老旧服务器,兼容旧脚本 |
| lsof | 多数系统需手动安装 | 较慢 | 定位占用端口的具体进程 |
端口查询输出字段需要快速识别,PID是进程编号,你拿到PID后可以执行kill命令终止占用端口的程序,Programname就是监听端口的应用名称。TCP和UDP端口行为存在区别,TCP端口具备连接、监听、关闭完整状态流转,UDP无连接,输出一般只显示监听状态。
过滤是高频配套操作。
管道符grep可以快速筛选目标端口或服务名称,所有三条命令都可以搭配grep使用。例如你排查Web服务端口冲突,用sudoss-tulnp|grepnginx,直接匹配nginx相关端口,省去手动翻找大量输出文本。grep匹配端口号时,建议加上冒号,如grep:80,避免数字匹配到PID里相同数字,造成误判。
云服务器的端口查询仅代表系统内部端口监听状态,服务器防火墙、云厂商安全组规则会独立拦截外部访问,哪怕端口在系统内正常监听,外部客户端依然无法连通。你不能只依靠端口查询命令判断外网能否访问,还需要同步检查firewalld、iptables以及云平台安全组放行策略。
端口号范围0到65535,1到1023属于知名端口,需要root权限才能绑定。
