Karp 的技术博客

在实际的系统管理和故障排查中,我们经常需要根据端口或进程ID(PID)来定位进程的运行地址。本文将详细介绍如何通过端口找到进程ID,再通过进程ID找到进程的运行地址。

场景描述

假设我们有一条Redis命令日志:

1739755907.286905 [0 172.31.0.12:47294] "ZADD" "test_hash" "2" "1" 

从日志中我们可以看到,Redis客户端连接的IP地址是172.0.0.1,端口是47294。我们的目标是通过这个端口找到进程ID,再通过进程ID找到进程的运行地址。

步骤详解

1. 登录到目标服务器

首先,我们需要登录到IP地址为172.0.0.1的服务器。可以使用SSH命令登录:

ssh user@172.0.0.1

2. 通过端口找到进程ID

登录到服务器后,我们可以使用lsof命令来查找哪个进程正在使用端口47294

lsof -i :47294

输出可能类似于:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 14202 redis    6u  IPv4 123456      0t0  TCP *:47294 (LISTEN)

从输出中我们可以看到,进程ID(PID)是14202,进程名称是redis-server

3. 通过进程ID找到进程的运行地址

接下来,我们可以使用ps命令来查看该进程的详细信息,包括命令行参数:

ps -p 14202 -o args=

输出可能类似于:

/usr/bin/redis-server *:6379

4. 查找进程的工作目录

为了找到进程的运行地址,我们可以使用pwdx命令来查看进程的工作目录:

pwdx 14202

输出可能类似于:

14202: /var/lib/redis

5. 使用/proc文件系统进一步确认

我们还可以通过/proc文件系统来查看进程的当前工作目录:

ls -l /proc/14202/cwd

输出可能类似于:

lrwxrwxrwx 1 redis redis 0 Oct  1 12:34 /proc/14202/cwd -> /var/lib/redis

通过以上步骤,我们成功地通过端口47294找到了进程ID14202,并通过进程ID找到了进程的运行地址/var/lib/redis。这一过程在系统管理和故障排查中非常有用,尤其是在需要定位特定服务的运行环境时。

关键命令总结

  1. 通过端口查找进程ID

    lsof -i :47294
  2. 通过进程ID查看命令行参数

    ps -p 14202 -o args=
  3. 通过进程ID查找工作目录

    pwdx 14202
  4. 通过/proc文件系统确认工作目录

    ls -l /proc/14202/cwd

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2025年02月17日 01:40
0

目录

来自 《通过端口和进程ID定位进程运行地址》