linux通过端口号定位进程的几种方法

Posted FserSuN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux通过端口号定位进程的几种方法相关的知识,希望对你有一定的参考价值。

通过端口号找进程ID(Pid)

1. 概述

日常在linux 服务器上排查问题时,会有根据端口号找对应pid(进程id)的需求,最终通过定位pid来排查问题。本文将介绍如何在linux系统上通过监听端口号找到相关的进程。

2.使用netstat命令

netstat命令通过p参数显示进程id,最后结合grep来找到对应的进程

l – 监听中的socket
t – 显示tcp连接
n – 以数字形式显示地址
u – 显示up连接
p – 显示进程id/程序名

通过输出可以看到ip地址、端口、进程id

root# netstat -ltnup         
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:17600         0.0.0.0:*               LISTEN      1293/dropbox        
tcp        0      0 127.0.0.1:17603         0.0.0.0:*               LISTEN      1293/dropbox   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      575/sshd  
tcp        0      0 127.0.0.1:9393          0.0.0.0:*               LISTEN      900/perl  
tcp        0      0 :::80                   :::*                    LISTEN      9583/docker-proxy 
tcp        0      0 :::443                  :::*                    LISTEN      9571/docker-proxy
udp        0      0 0.0.0.0:68              0.0.0.0:*                           8822/dhcpcd
...

最后grep找出22端口对应的进程,pid为575。

root# netstat -ltnup | grep ':22'
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      575/sshd

3.使用ss命令

我们以查看监听22端口的进程为例,根据括号内的结果可得到进程pid。这里sport指源端口,如果期望查看目标端口那么可以使用dport, 「dport = :22」。与netstat相比,我们不需要结合grep来筛选,直接通过端口过滤筛选出我们需要的信息。

root# ss -ltnup 'sport = :22'
Netid  State  Recv-Q  Send-Q    Local Address:Port   Peer Address:Port                     
tcp    LISTEN 0       128       0.0.0.0:22           0.0.0.0:*             users:("sshd",pid=575,fd=3))

4.使用lsof命令

lsof命令通过 -i :port_number选项来找出指定端口对应的进程。

root# lsof -i :22
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd       575 root    3u  IPv4   19373      0t0  TCP *:ssh (LISTEN)

lsof可以通过-i参数指定多个端口

root# lsof -i :22 -i :68
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd       575 root    3u  IPv4   19373      0t0  TCP *:ssh (LISTEN)
dhcpcd    8822 root   10u  IPv4   49601      0t0  UDP *:bootpc

5.总结

本文介绍了3个命令可以可以找出监听某个端口的进程id,日常排查网络连接数过多,分析来源可以通过这些命令帮助我们快速发现问题。

以上是关于linux通过端口号定位进程的几种方法的主要内容,如果未能解决你的问题,请参考以下文章

Linux 技巧:让进程在后台可靠运行的几种方法

linux 端口被占用,linux端口号被占用解决方法

sh linux下通过端口号杀死后台进程

通过端口号查找进程号并杀掉进程window和Linux版本

Linux08-Linux查SSH\FTP端口号

Linux 技巧:让进程在后台可靠运行的几种方法