os x下netstat不是十分好使,可以显示端口的进程号,但不能显示是具体哪个程序
比如想要显示有哪些端口在Listen

$ netstat -anLv

结果
图片描述

lsof可以看到具体的程序名

$ lsof -ni | grep LISTEN

图片描述

如果想知道某端口是否在监听, 最好使用telnet, 因为lsof对于没有权限的端口返回的结果是空

查看TCP连接

$ lsof -itcp

查看ipv6协议的TCP连接

$ lsof -i6tcp

查看指定端口的连接

$ lsof -i:1080

需要更具体的连接状态就在后面加grep,我自己一般是用grep -i,防止因为大小写漏掉数据

有时lsof的时候可能不会显示端口, 比如显示"callbook"(使用ssh时), 这时可以加上-P参数

lsof -P -itcp:2000

跟踪进程的系统调用

在mac下是用dtruss命令,对应的linux命令是strace,使用时需要sudo

   dtruss df -h       # run and examine "df -h"
   dtruss -p 1871     # examine PID 1871
   dtruss -n tar      # examine all processes called "tar"
   dtruss -f test.sh  # run test.sh and follow children

mac下的dtrace命令对应Linux下的ltrace


quietin
761 声望44 粉丝

兴趣在程序语言, 高性能, 分布式等方面