使用 lsof 代替 Mac OS X 中的 netstat 查看占用端口的程序

 

使用 lsof 代替 Mac OS X 中的 netstat 查看占用端口的程序

 

众所周知水果系统内核是有 BSD 血统的 Darwin,OS X 自带的很多 CLI 工具也是 BSD style 的,有一部分使用起来和 Linux 无异,有一部分可以通过 brew 安装 GNU 版本(如 tar),但是 OS X 的 netstat 不能查看使用端口的程序名让我一直很不爽,而且也没找到 GNU 版本,于是去搜了一下解决办法,stackoverflow 上的结论基本都是建议使用 lsof 代替 netstat 进行查看:

sudo lsof -nP -iTCP:端口号 -sTCP:LISTEN
  • -n 表示不显示主机名
  • -P 表示不显示端口俗称
  • 不加 sudo 只能查看以当前用户运行的程序

另外,还可以通过管道来过滤想要的信息

sudo lsof -nP -iTCP -sTCP:LISTEN | grep python

基本效果如下:

查看当前所有监听的端口以及对应的CommandPID

➜ ~ lsof -nP -iTCP -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
SSH\x20Pr 1553 tonydeng 8u IPv4 0xee7327e39355d175 0t0 TCP 127.0.0.1:8087 (LISTEN)
SSH\x20Pr 1553 tonydeng 9u IPv6 0xee7327e38aad6e15 0t0 TCP [::1]:8087 (LISTEN)
java 2978 tonydeng 166u IPv6 0xee7327e38aad7e35 0t0 TCP *:62622 (LISTEN)
node 3319 tonydeng 31u IPv4 0xee7327e39f0f8745 0t0 TCP *:4000 (LISTEN)

查看指定端口对应的CommandPID

➜ ~ lsof -nP -iTCP:4000 -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 3319 tonydeng 31u IPv4 0xee7327e39f0f8745 0t0 TCP *:4000 (LISTEN)

PS : 输出占用该端口的 PID

lsof -nP -iTCP:4000 |grep LISTEN|awk '{print $2;}'

 

转载来源:https://tonydeng.github.io/2016/07/07/use-lsof-to-replace-netstat/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值