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
标志是用于显示原始的端口号,而不是解决的名字,如http
,ftp
或像更深奥的服务名称dpserve
,socalia
。
有关更多选项,请参阅注释。
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
是一个非常强大的工具,但不幸的是使用起来不那么舒服。
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)
添加回答
举报