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通过端口号定位进程的几种方法的主要内容,如果未能解决你的问题,请参考以下文章