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
4、通过ll /proc/PID 命令查看进程所在的目录位置