osx 下如何查端口对应的 tcp/udp 进程?

2015-02-08 10:27:58 +08:00
 interdev
刚启动了tftpd ,通过 netstat -ap udp 能查到端口开了,通过 ps 确查不到进程启动了?请问osx下如何查端口对应的tcp/udp进程?

osx4:test jeff$ netstat -ap udp | grep tftp
udp6 0 0 *.tftp *.*
udp4 0 0 *.tftp *.*
osx4:test jeff$ ps aux | grep tftp
jeff 670 0.0 0.0 2432772 640 s000 S+ 10:25上午 0:00.00 grep tftp
osx4:test jeff$ ls /usr/libexec/tftpd
/usr/libexec/tftpd
3193 次点击
所在节点    macOS
5 条回复
auser
2015-02-08 10:30:21 +08:00
man lsof
interdev
2015-02-08 10:43:20 +08:00
谢谢,@auser ,lsof 刚开始也没查到,后来一想可能是权限问题,以root运行就能查到了, 不知道我这样理解对不对, tftpd 是以1号进程launchd的子进程方式在运行,有root权限,能访问所有文件。

sh-3.2# lsof -ni | grep tftp
launchd 1 root 48u IPv4 0x2f0d2aae9fd6e1e3 0t0 UDP *:tftp
launchd 1 root 50u IPv4 0x2f0d2aae9fd6e1e3 0t0 UDP *:tftp
launchd 1 root 51u IPv6 0x2f0d2aae9fd6df8b 0t0 UDP *:tftp
launchd 1 root 52u IPv6 0x2f0d2aae9fd6df8b 0t0 UDP *:tftp
lululau
2015-02-08 11:15:59 +08:00
lsof -i:port
ptyfork
2015-02-08 11:25:31 +08:00
launchd这个功能是跟xinetd原理差不多的, launchd启动侦听在tftp端口,此时tfptd实际没有启动, 等有客户端请求时,launchd接受请求后fork出tftpd子进程把网络连接分发给子进程完成服务请求。
interdev
2015-02-08 11:37:36 +08:00
@ptyfork 谢谢,原来是以超级守护进程方式在运行,类似于windows的 svchost.exe了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/169207

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX