使用端口确定进程,无需sudo


11

我想找出哪个进程(特别是进程ID)正在使用给定的端口。一个要注意的是,我不想使用sudo,也不能以root用户身份登录。我想要此功能运行的进程由我要查找进程ID的同一用户运行-因此我以为这很简单。

双方lsofnetstat不会告诉我的进程ID,除非我使用sudo运行它们-他们会告诉我的端口正在使用虽然。

作为一些额外的上下文-我有各种应用程序都通过SSH连接到我管理的服务器,并创建反向端口转发。设置完这些后,我的服务器将使用转发的端口进行一些处理,然后可以终止连接。如果我可以将特定端口(每个应用程序都有自己的端口)映射到进程,这是一个简单的脚本。有什么建议?

顺便说一下,这是在Ubuntu盒子上的-但是我猜任何解决方案在大多数Linux发行版中都是标准的。

Answers:


7

--programnetstat 的选项向您显示PID和您自己的进程的名称。存在此选项并在net-tools 1.60中的netstat 1.42中的RHEL 6上运行。

我确认可以netstat -an --tcp --program显示进程的PID。


1
我想你的意思是-annetstat -pant也可以,而且更容易记住。
Eduardo Ivanec

是的,多余的“-”悄悄进入。我喜欢助记符。
帕维尔Brodacki

恐怕这在Ubuntu上不起作用-因为在没有root的情况下它不会显示该过程-而且似乎SSH转发就是其中一种情况。
拍拍

帕维尔(Pawel):现在OP终于对他的用例有了具体的了解(请参见链中的评论),我敦促您再试一次。我在一个CentOS 5机器(也是net-tools 1.60的netstat 1.42)上做的,但失败了,正如他所说。我会对您的经历感兴趣。
MadHatter

3

Pawel的建议对我来说似乎很好,但作为替代,这是我在shell1处进行的监听:

[madhatta@risby ~]$ nc -l  localhost 3456

这是我lsof在shell2中看到的:

[madhatta@risby tmp]$ lsof -i tcp:3456
COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nc      18109 madhatta    3u  IPv4 69205153      0t0  TCP localhost.localdomain:vat (LISTEN)

编辑:您在评论中写道

SSH转发的行为必须不同-即使该进程由同一用户拥有,但除非以root / sudo身份运行,否则我看不到lsof输出中列出了该进程。

但这对我来说不是。使用ssh通过转发本地端口8001之后 ssh vpn.example.com -L 8001:rt.int:80,我发现:

[madhatta@risby ~]$ lsof -n -i tcp:8001
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     5375 madhatta    8u  IPv6 381234      0t0  TCP [::1]:vcom-tunnel (LISTEN)
ssh     5375 madhatta    9u  IPv4 381235      0t0  TCP 127.0.0.1:vcom-tunnel (LISTEN)

您能否向我们展示一些示例输出,最好不要过多编辑?


1
看起来SSH转发必须表现出不同的行为-即使该进程由同一用户拥有,但lsof除非以root / sudo身份运行,否则我看不到它在输出中列出。
拍拍

以用户身份运行时,转发端口上根本没有lsof输出。如果我使用sudo运行它,那么我看到的输出很像您添加到答案中的内容。唯一值得注意的区别是,我看到的是实际的端口号,而不是vcom-tunnel。

另外,这是一个远程转发,而不是本地转发-也许是差异的根源?还是您正在使用远程转发进行测试?

远程转发是指“从服务器AI ssh到服务器B,将端口xxx从服务器B转发回服务器A”?如果是这样,您为什么期望在服务器A上使用netstat / lsof进行处理?这样就不会在服务器A上创建新的侦听器,因此不会涉及服务器A上的端口分配(暂时保存)。
MadHatter

SSH从A到B,从端口X端口向前B到端口Y于C(其是A的防火墙内部-因此需要正向),使用lsof的/ netstat的第B端口X.
轻拍
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.