在 Linux 系统中,如果你已知某个端口被占用,可以通过以下几种方法查找对应的进程 ID(PID)以及获取进程的详细信息。
方法 1:使用 netstat
使用 netstat
命令可以查看网络连接和监听端口的信息。
命令
1
| netstat -tulnp | grep <端口号>
|
示例
查找 6379 端口:
1
| netstat -tulnp | grep 6379
|
输出示例
1 2
| tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 2448/docker-proxy tcp6 0 0 :::6379 :::* LISTEN 2454/docker-proxy
|
方法 2:使用 lsof
lsof
命令用于列出打开的文件及其对应的进程。
命令
示例
查找 6379 端口:
输出示例
1 2 3
| COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME docker-pr 2448 root 4u IPv4 38430 0t0 TCP *:6379 (LISTEN) docker-pr 2454 root 4u IPv6 23712 0t0 TCP *:6379 (LISTEN)
|
方法 3:使用 ss
ss
是一个更现代的网络工具,用于查看 socket 状态。
命令
示例
查找 6379 端口:
输出示例
1 2
| tcp LISTEN 0 128 *:6379 *:* users:(("docker-proxy",pid=2448,fd=4)) tcp LISTEN 0 128 [::]:6379 [::]:* users:(("docker-proxy",pid=2454,fd=4))
|
获取进程详细信息
一旦你获得了 PID,可以使用 ps
命令查看进程的详细信息。
命令
1
| ps -p <PID> -o pid,comm,args
|
示例
查找 PID 为 2448 的进程:
1 2 3 4 5 6 7
| [root@luffy ~]# ps -p 2448 -o pid,comm,args PID COMMAND COMMAND 2448 docker-proxy /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.24.0.2 -container-port 6379 [root@luffy ~]# ps -a 2448 PID TTY STAT TIME COMMAND 2448 ? Sl 0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.24.0.2 -container-port 6379 14505 pts/0 R+ 0:00 ps -a 2448
|
总结
通过上述三种方法,你可以成功查找占用特定端口的进程及其 PID,并进一步获取进程的详细信息。这在进行网络故障排除或管理监听服务时非常有用。