linux查看进程、端口号、查找文件位置

linux查看进程、端口号、查找文件位置,第1张

你刚入职一家公司,现在有一个项目。项目比较老了,对接神备兄弟早就已经离职联系不上了,你领导让你找一雀盯下这个项目的jar包位置.......

这个时候就可以找到项目对应的顷瞎和ip,端口。找到端口了,执行netstat -tunlp | grep [端口],就可以找到文件的位置了。

至少有两种方法

方法一:用一个软件,比如厅庆360安全卫士功能大全里面的网络联接查看器,就可以详细的查看网络联接进程端口号

方法二:可用批处理脚本查询,这个方法简单方便。

新建一个记事本文件

把以下内容复制到记事本上,保存后,把扩展名TXT改为BAT,如果看不到扩展名,请在资源管理器,工具》文件夹选项》查看》下面的高级里把隐藏己知文件扩展名勾去掉。

@echo off

color a

Title XP端口-进程查询

setlocal enabledelayedexpansion

echo ╔- -╗

echo 本机开放的端口及使用该端口的进程

echo ╚- -╝

echo ------------------------------------

echo 端口号 进程名称

ECHO TCP协议:

::利用netstat命令找出使用TCP协议通信的端口,并将结果分割;

::将第二个参数(IP加端口)传给%%i,第五个参数(PID号)传给%%j

for /F "usebackq skip=4 tokens=2,5" %%i in (`"netstat -ano -p TCP"`) do (

call :Assoc %%i TCP %%j

echo !TCP_Port! !TCP_Proc_Name!

)

ECHO UDP协议:

for /F "usebackq skip=4 tokens=2,4" %%i in (`"netstat -ano -p UDP"`) do (

call :Assoc %%i UDP %%j

echo !UDP_Port! !UDP_Proc_Name!

)

echo 按任意键退出

pause>nul

:Assoc

::对%1(第一个参数)进行分割,将第二个参数传给%%e。在本程序中,%1即为上裂御面的%%i(形式为:IP:端口号)

for /F "tokens=2 delims=:" %%e in ("%1") do (

set %2_Port=%%e

)

:: 查询PID等于%3(第三个参数)的进程,并将结果传给变量?_Proc_Name,?代表UDP或者TCP;

for /F "skip=2 usebackq delims=, tokens=1"肆伏岩 %%a in (`"Tasklist /FI "PID eq %3" /FO CSV"`) do (

::%%~a表示去掉%%a外面的引号,因为上述命令的结果是用括号括起来的。

set %2_Proc_Name=%%~a

)

1)使用lsof命令lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件。在linux系统下,基本上所有的东西都可以被当作文件来用。socket当然也是一种塌袜码文件了。所以lsof可以用来查找谁用了某一个端口。具体方法:lsof -i :port_number grep "(LISTEN)"-i是用来查找和网络相关的文件,":"号是必须的,它是标志你查找的是一个端口。port_number就是你要查找的端口号,譬如你要查找是否 有程序占用了oracle的监听端口1521,就可以使用lsof -i :1521 |grep "(LISTEN)"。如果有程序已经占用了,那么下面打印的第二个字段就是该程序的进程id,第一个字段好森是进程的名字。如果只有losf -i :port_number可能会查到很多应用程序,但这些程序实际并没有占用你指定的端口,这些端口只是团哪连接到本机器或者别的机器的该端口。所以要grep "(LISTEN)“,因为一个端口只可能被一个程序占用的,所以这种方法是可靠的。2)使用netstat 命令大家一定对这个命令比较熟悉了,可能你从没有想到用到来查找哪一个程序的占用了指定的端口。但是netstat -an 的确提供了这种功能。所以有问题了一定要想到先去查找man手册,不过说实话,某些man手册写得让中国人看不懂,那没有办法了,就googe或者 baidu一下吧。执行man netstat命令,你会发现netstat 提供了'-p'的选项,这个选项的功能是告诉你哪个程序占用了该端口,但是她提供的形式比较古怪是以pid/process_name提供的。pid当然 是进程id了,process_name是进程的命令,中间以'/'号分隔。和上面的原因一样,我们只查找listen的端口,netstat 给我们提供了-l的选项,这个选项不是默认的选项。下面以1521端口来看怎么查找到该程序,我们使用下面的命令:netstat -lnpawk 'BEGIN{prt=":1521$"}{if ($4 ~ prt) print $0}'在这里使用awk来匹配第4个字段的模式是为了避免误判。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12324185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存