为了账号安全,请及时绑定邮箱和手机立即绑定

谁正在侦听Mac OS X上的给定TCP端口?

谁正在侦听Mac OS X上的给定TCP端口?

谁正在侦听Mac OS X上的给定TCP端口?在Linux上,我可以使用netstat -pntl | grep $PORT或fuser -n tcp $PORT找出哪个进程(PID)正在侦听指定的TCP端口。如何在Mac OS X上获得相同的信息?
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

在macOS High Sierra上,使用以下命令:

lsof -nP -i4TCP:$PORT | grep LISTEN

在旧版本上,使用以下形式之一:

lsof -nP -iTCP:$PORT | grep LISTENlsof -nP -i:$PORT | grep LISTEN

$PORT用端口号或逗号分隔的端口号列表替换。

sudo如果您需要有关#1024以下端口的信息,请前置(后跟空格)。

-n标志用于显示IP地址而不是主机名。这使得命令执行速度更快,因为获取主机名的DNS查找可能很慢(许多主机需要几秒或一分钟)。

-P标志是用于显示原始的端口号,而不是解决的名字,如httpftp或像更深奥的服务名称dpservesocalia

有关更多选项,请参阅注释。


查看完整回答
反对 回复 2019-08-05
?
holdtom

TA贡献1805条经验 获得超10个赞

从Snow Leopard(10.6)到Mojave(10.14),每个版本的macOS都支持这个:

sudo lsof -iTCP -sTCP:LISTEN -n -P

就个人而言,我最终在我的这个简单的功能~/.bash_profile

listening() {
    if [ $# -eq 0 ]; then
        sudo lsof -iTCP -sTCP:LISTEN -n -P
    elif [ $# -eq 1 ]; then
        sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
    else
        echo "Usage: listening [pattern]"
    fi}

然后listening命令会给出一个监听某个端口的进程列表,并listening smth为某些模式greps这个。

有了这个,很容易询问特定的过程,例如listening dropbox,或端口,例如listening 22

lsof命令有一些专门的选项来询问端口,协议,进程等,但我个人发现上面的功能更方便,因为我不需要记住所有这些低级选项。lsof是一个非常强大的工具,但不幸的是使用起来不那么舒服。


查看完整回答
反对 回复 2019-08-05
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

真的很惊讶没有人建议:

lsof -i :PORT_NUMBER

获得所需的基本信息。例如,检查端口1337:

lsof -i :1337

其他变化,取决于具体情况:

sudo lsof -i :1337lsof -i tcp:1337

您可以轻松地在此基础上提取PID本身。例如:

lsof -t -i :1337

这也与此命令等效(结果):

lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID

为了完整性,因为经常一起使用:

杀死PID:

kill -9 <PID># kill -9 60401

或作为一个班轮:

kill -9 $(lsof -t -i :1337)


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 727 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信