通过SS链接信息反查进程信息

ss 命令的输出中,显示了一条 TCP 连接记录:

tcp    ESTAB      0      0                        10.8.0.1:42384                                 10.8.0.10:21771

以下是这条记录的详细解释:

  1. tcp:

    • 表示这是一个 TCP 协议的连接。

  2. ESTAB:

    • 代表连接处于“已建立”状态(ESTABLISHED)。这意味着两台设备之间的连接已经成功建立,并且正在进行数据通信。

  3. 0 0:

    • 这些数字通常代表发送和接收的队列大小,表示当前发送和接收的数据量很小或没有积压的数据包。

  4. 10.8.0.1:42384:

    • 这是本地端的 IP 地址和端口号。10.8.0.1 是本地设备的 IP 地址,42384 是本地的端口号。

  5. 10.8.0.10:21771:

    • 这是远程端的 IP 地址和端口号。10.8.0.10 是远程设备的 IP 地址,21771 是远程的端口号。


要查看哪个进程正在使用特定的网络连接,可以使用以下工具和方法:

1. 使用 ss 命令

ss 命令可以显示所有当前的套接字连接,并且可以与 -p 参数结合使用来显示与每个连接相关的进程信息。

运行以下命令以查找使用特定连接的进程:

sudo ss -tp 'dport = :21771' 'sport = :42384'

解释:

  • -t:显示 TCP 连接。

  • -p:显示与每个连接相关的进程信息。

  • 'dport = :21771':过滤目的端口为 21771 的连接。

  • 'sport = :42384':过滤源端口为 42384 的连接。

这样,ss 会显示匹配的连接以及相关的进程信息。

2. 使用 netstat 命令

netstat 命令也是一个查看网络连接的工具,虽然在现代系统中通常推荐使用 ss,但它仍然可以很好地完成任务。

运行以下命令:

sudo netstat -tnp | grep '10.8.0.1:42384'

解释:

  • -t:仅显示 TCP 连接。

  • -n:以数字形式显示地址和端口号。

  • -p:显示每个连接的进程 ID 和进程名称。

  • grep 用于筛选特定的源地址和端口号。

3. 使用 lsof 命令

lsof 是一个更通用的工具,可以列出与文件、网络连接等相关的所有进程信息。

运行以下命令:

sudo lsof -i TCP:42384

解释:

  • -i TCP:42384:显示使用本地端口 42384 的所有 TCP 连接。

或者,如果你想更具体地查看 IP 地址和端口号:

sudo lsof -i @10.8.0.1:42384

4. 使用 fuser 命令

fuser 是一个更直接的工具,用于查看哪些进程在使用特定的网络端口。

运行以下命令:

sudo fuser 42384/tcp

解释:

  • 42384/tcp:指定要查看的 TCP 端口号。

这个命令将返回使用端口 42384 的进程 ID,你可以进一步使用 ps 命令查看详细信息:

ps -p <PID> -o pid,comm,args

其中 <PID> 是上面 fuser 返回的进程 ID。

通过这些方法,你可以找到使用特定网络连接的进程,并获得相关的详细信息。


显示信息

tcp        0      0 10.8.0.1:42384          10.8.0.10:21771         ESTABLISHED 2536/python3


这条输出表明一个使用 python3 解释器的进程(进程 ID 为 2536)正在使用从 10.8.0.1:4238410.8.0.10:21771 的 TCP 连接,连接状态为 ESTABLISHED(已建立)。

解释各个部分:

  • tcp:表示这是一个 TCP 协议的连接。

  • 0 0:表示发送和接收的队列大小,通常表示目前没有积压的数据包。

  • 10.8.0.1:42384:本地 IP 地址和端口号,表示此连接来自 10.8.0.142384 端口。

  • 10.8.0.10:21771:远程 IP 地址和端口号,表示此连接目标为 10.8.0.1021771 端口。

  • ESTABLISHED:连接状态为“已建立”,即连接已经成功建立,并且正在进行通信。

  • 2536/python3:使用此连接的进程信息,2536 是进程 ID(PID),python3 是执行该进程的程序名。

进一步操作:

  1. 查看进程详情: 你可以使用 ps 命令来查看 PID 2536 的更多信息:

    ps -p 2536 -o pid,ppid,comm,user,etime,args

    这将显示有关该进程的详细信息,包括父进程 ID、启动用户、运行时间和启动参数等。

  2. 查看进程执行的脚本: 如果你想了解 python3 正在运行哪个脚本,可以通过 lsofps 查看:

    sudo lsof -p 2536

    或者,使用 ps

    ps -p 2536 -o args=

    这将显示该进程的完整启动命令行,包括所执行的 Python 脚本。

  3. 终止进程(如果有需要): 如果你确定此进程不应该运行,或者需要停止它,可以使用以下命令终止它:

    sudo kill 2536

    或者强制终止:

    sudo kill -9 2536