Linux lsof命令

lsof命令是一个列出当前系统打开文件的工具,常用于从端口反查打开这个端口的应用程序。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。

1、查找端口

[root@channel ~]# netstat -an | grep 22654
tcp        0      0 ::ffff:192.168.23.34:22654  ::ffff:192.168.23.33:61616  ESTABLISHED


2、通过端口查找进程号

[root@channel ~]# lsof -i:22654
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    4345 root 1552u  IPv6 1467801      0t0  TCP channel.web.ips.local:22654->192.168.23.33:61616 (ESTABLISHED)


3、通过进程号查找应用程序

[root@channel ~]# ps -ef | grep 4345
root      2348  2283  0 14:31 pts/0    00:00:00 grep 4345
root      4345  4295  3 Dec07 pts/1    09:54:10 /opt/jrockit-jdk1.6.0_33/bin/java -jrockit -Xms2560m -Xmx2560m -Dweblogic.Name=pbcs -Djava.security.policy=/bea/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.security.SSL.trustedCAKeyStore=/bea/Oracle/Middleware/wlserver_10.3/server/lib/cacerts -da -Dplatform.home=/bea/Oracle/Middleware/wlserver_10.3 -Dwls.home=/bea/Oracle/Middleware/wlserver_10.3/server -Dweblogic.home=/bea/Oracle/Middleware/wlserver_10.3/server -Dweblogic.management.discover=false -Dweblogic.management.server=http://192.168.23.34:9003 -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/bea/Oracle/Middleware/patch_wls1033/profiles/default/sysext_manifest_classpath:/bea/Oracle/Middleware/patch_ocp353/profiles/default/sysext_manifest_classpath -Dweblogic.configuration.schemaValidationEnabled=false weblogic.Server