根据进程查端口号

本文介绍通过命令行工具查询Windows系统中进程与端口之间的对应关系的方法,包括如何根据进程查询端口号及根据端口号查询进程,并进一步查找进程所属程序。

转自:http://hi.baidu.com/lyshigua/blog/item/068bb8b4ee46cd718ad4b2c4.html

 

一、根据进程查端口号
     
     首先在开始菜单的“运行”框中输入“cmd.exe”进入命令提示符窗口,先键入“tasklist”命令将列出系统正在运行的进程列表,把你要查的进程所对应的“PID”号记下或复制。
     
     小资料:单击右键菜单中的标记,然后将你要查的进程对应的“PID”号选中,按一下“回车”键就可以了。需要注意的是,相同的进程 图像名 每次运行的“PID”号一般都不会相同,所以一旦该进程重启后,该“PID”号就会改变,这就需要重新查看。
     
     把进程的PID号记下后,接下来就用这个PID号把该进程所开的端口显示出来了。
     
     在当前的命令符下继续键入“netstat -ano | findstr 1140”命令,其中“netstat -ano”参数表示以数字形式显示所有活动的TCP连接以及计算机正在侦听的TCP、UDP端口 并且显示对应的进程ID PID 号;“|findstr 1140”表示查找进程PID为“1140”的TCP连接以及TCP、UDP端口的侦听情况(在实际应用中,需要把你刚才记下或复制的PID号替换掉这里的1140)。按“回车”键后,就会显示出该进程所开的端口号(图1)。
     
    


        
     从图1中我们可以明显地看出,PID为“1140”的进程所开启的端口为“3001”,如果此时没有任何提示信息返回,则说明该进程没有开启任何端口。
     
     二、根据端口号查进程
     
     在命令提示符窗口中输入“netstat -ano”命令,列出系统当前的端口列表,该命令的作用已在上面提过了。-o参数的作用主要是显示各端口对应的进程PID号,现在把你要查的端口对应的进程PID号记下或复制。然后在命令提示符下继续输入“tasklist /fi ″PID eq 788 ″”(在实际应用中,需要把你复制或记下的PID号替换掉这里的788),这行语句“/fi”参数表示在“tasklist”中筛选,而“PID eq 788”则是指定筛选的条件,按“回车”键后,就会显示出端口对应的进程。
     
     从图2中可以看出,PID号为“788”所对应的进程为“svchost.exe”,如果你查的端口没有关联任何进程的话,此时就会返回“没有运行带有指定标准的任务”的提示信息。
     
         
     
     
     三、查出进程对应的程序
     
     知道了端口和进程的关联后,如何再进一步查出该进程是那个软件或程序的进程呢?
     
     下面的操作就需要用到Windows 2000(Server或Professional版都可以)安装光盘中的一个工具。
     
     首先在安装光盘的“Support/Tools/”目录下,用解压软件打开“support.cab”压缩包,找到“tlist.exe”文件,将此文件释放到任一目录,如“D:/Support”。然后在命令提示符窗口中切换到此目录,运行“tlist.exe”命令,把要查的进程对应的PID号记下或复制(第一列就是进程的PID号),然后继续输入“tlist.exe 2012”命令(你输入的时候,需要将刚才记下的PID号替换掉这里的2012),“CmdLine ”后面显示的就是该进程对应的软件所在的目录。
     
     除此之外,返回信息中还列出了该进程所调用的文件,得到了这些信息就可以很容易查出进程对应的程序了。
     
     假如想关闭某个进程,可把该进程的PID号记下,在命令提符下输入“taskkill /pid 2400” 2400是PID号)就可以将PID号为2400的进程关闭,如果要强制关闭该进程,只须在这条命令的后面加个“/f”参数即可。

<think> 我们正在讨论如何根据进程号端口号。这是一个系统管理或网络调试中的常见任务。 在Linux系统中,我们可以使用一些命令行工具来实现这个目的。常见的方法包括使用`netstat`、`ss`或`lsof`命令。 由于`netstat`在某些新系统中已被标记为过时(尽管仍然可用),而`ss`是更现代的工具,同时`lsof`也是一个功能强大的工具,我们可以介绍多种方法。 注意:进程号(PID)是操作系统中每个进程的唯一标识符。 方法1:使用`netstat`命令 `netstat`可以显示网络连接、路由表、接口统计等信息。我们可以通过管道过滤出特定PID的端口。 命令示例:`netstat -tunlp | grep <PID>` 其中选项解释: -t: 显示TCP端口 -u: 显示UDP端口 -n: 以数字形式显示地址和端口号(而不是尝试解析主机名或服务名) -l: 仅显示监听套接字(即监听端口) -p: 显示进程标识符和程序名称(需要sudo权限才能看其他用户的进程) 方法2:使用`ss`命令(推荐) `ss`是`netstat`的现代替代品,速度更快,信息更详细。同样可以按照PID过滤。 命令示例:`ss -tunlp | grep <PID>` 选项意义与`netstat`类似。 方法3:使用`lsof`命令 `lsof`(list open files)可以列出当前系统打开的文件(在Linux中,一切皆文件,包括网络套接字)。 命令示例:`lsof -i -a -p <PID>` 选项解释: -i: 列出网络文件(即网络连接) -a: 表示逻辑与,用于组合多个条件(这里我们同时使用-p和-i,所以需要-a) -p: 指定进程ID 另外,也可以反过来通过端口号进程号,但这里用户明确要求根据进程号端口号。 需要注意的是,有些进程可能打开多个端口,因此上述命令可能会返回多行结果。 下面我们将给出具体的示例步骤,以帮助用户理解。 假设我们要进程号为1234的进程所占用的端口。 示例1(使用netstat): ``` netstat -tunlp | grep 1234 ``` 示例2(使用ss): ``` ss -tunlp | grep 1234 ``` 示例3(使用lsof): ``` lsof -i -a -p 1234 ``` 在输出中,我们主要关注的是端口号(例如,在netstat和ss的输出中,端口号在“Local Address”部分的冒号后面;在lsof的输出中,端口号在“NAME”列中显示为类似“*:8080”的形式)。 如果用户没有指定某个具体的进程号,可能需要先通过进程名获取进程号,例如使用`pgrep`或`ps`命令。 例如,找名为“nginx”的进程进程号: ``` pgrep nginx ``` 或者 ``` ps -ef | grep nginx ``` 然后根据得到的进程号端口号。 由于用户的问题是根据进程号端口号,因此我们假设用户已经获得了进程号。 最后,需要注意的是,执行这些命令可能需要root权限(特别是在看其他用户进程时),因此有时需要在命令前加上`sudo`。 根据上述内容,我们生成相关问题。 </think> ### 如何根据进程号端口号 在 Linux 系统中,可以通过以下方法根据进程号(PID)询其占用的端口号: #### 方法 1:使用 `ss` 命令(推荐) ```bash ss -tunlp | grep <PID> ``` - **选项说明**: - `-t`:TCP 端口 - `-u`:UDP 端口 - `-n`:显示数字端口号 - `-l`:仅显示监听端口 - `-p`:显示进程信息 - **示例**: ```bash ss -tunlp | grep 1234 ``` 输出中的 `:PORT` 部分即为端口号(如 `:80`)。 #### 方法 2:使用 `lsof` 命令 ```bash lsof -i -a -p <PID> ``` - **选项说明**: - `-i`:网络连接 - `-a`:逻辑与(组合条件) - `-p`:指定进程号 - **示例**: ```bash lsof -i -a -p 5678 ``` 找输出中的 `PORT` 列(如 `TCP *:443 (LISTEN)`)。 #### 方法 3:通过 `/proc` 文件系统 ```bash ls -l /proc/<PID>/fd | grep socket: ``` - 获取 socket inode 号后,再通过以下命令匹配端口: ```bash grep -E "00000000:<PORT>|inode=<INODE>" /proc/net/tcp /proc/net/udp ``` #### 注意事项: 1. **权限要求**:普通用户只能看自有进程看系统进程需 `sudo` 权限 2. **端口状态**:`LISTEN` 表示监听端口,`ESTABLISHED` 表示活跃连接 3. **多端口进程**:一个进程可能占用多个端口,需检所有输出行 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值