分类:
2009-07-16 17:04:29
在AIX系统下如何知道在给定端口侦听的进程?
一、前言
在使用AIX操作系统时,用netstat命令能很容易看到系统内有哪些端口被占用了,哪些端口有进程在侦听。但是,要想知道在给定端口上侦听的进程是什么,恐怕就不那么容易了。IBM AIX
二、实现原理
它的实现原理是:用netstat命令查询在给定端口侦听的网络地址,调用rmsock命令显示在网络地址侦听的进程PID,调用ps命令显示活动进程的完整信息。
它的核心是rmsock命令,rmsock命令是IBM AIX
下面以telnet端口23为例,演示一下手工方式调用命令获得进程PID的过程:
* 看网络地址
netstat -Aan | grep *.23
执行上述命令后,系统输出如下:
f100060003652398 tcp 0 0 *.23 *.* LISTEN
*.23表示在端口23侦听的网络地址,*代表该主机的任意IP地址。
f100060003652398 是该套接字的(16进制表示的)系统内核地址。
* 看进程PID
rmsock f100060003652398 tcpcb
执行上述命令后,系统输出如下:
The socket 0x3652008 is being held by proccess 332008 (inetd).
显然,占用网络地址的进程PID是 332008,进程执行映像是inetd。
* 看进程的详细信息
ps -efl | grep 332008
执行上述命令后,系统输出如下:
其中第4列是进程PID,最后一列是进程执行映像的完整路径。
至此,进程的完整信息都被暴露出来,我们的目标基本达到了。不过用了三条命令才达到目标,在日常系统管理过程中显得相当繁琐,作者使用Shell脚本把三条命令整合到一起,方便大家使用。