您在 Mac OS X 上使用什么作为“fuser -v -n tcp”替代方案

Mar*_*tin 11 bsd tcpip macos

Mac OS X 上的 fuser 命令相当原始,无法检查侦听特定端口的进程。有人知道一个好的选择吗?知道哪个进程在那个端口上监听就足够了。

Gor*_*son 16

正如@vcsjones 在评论中所说,lsof是用于此的工具:

$ sudo lsof -i tcp:80
COMMAND PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
Safari  804 gordon   16u  IPv4 0x05a2cec8      0t0  TCP 192.168.6.3:50542->stackoverflow.com:http (ESTABLISHED)
httpd   874   root    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)
httpd   878   _www    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)
Run Code Online (Sandbox Code Playgroud)

没有-i,它会显示所有打开的文件;仅-i显示网络文件;如果在 之后指定某些内容,则-i可以通过以下任何一项或全部进行限制:IPv4/6、TCP/UDP、主机名或 IP 以及端口号/服务名称。

  • 以防万一它对像我这样希望使用给定端口盲目杀死所有进程的人有用:`lsof -i tcp:5000 | grep 聆听 | awk '{print $2}' | xargs kill` 杀死所有侦听端口 5000 的进程 (3认同)