在Linux上,我可以使用netstat-pntl | grep$PORT或fuser-n tcp$PORT来确定哪个进程(PID)正在侦听指定的tcp端口。如何在Mac OS X上获得相同的信息?
当前回答
2016年1月更新
真的很惊讶没有人建议:
lsof -i :PORT_NUMBER
以获得所需的基本信息。例如,检查端口1337:
lsof -i :1337
其他变化,视情况而定:
sudo lsof -i :1337
lsof -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)
其他回答
我是一个Linux人。在Linux中,使用netstat-ltpn或这些字母的任何组合都非常容易。但在Mac OS X netstat中,grep LISTEN是最人性化的。其他的非常难看,在排除故障时很难记住。
对于macOS,我使用两个命令一起显示有关在机器上侦听的进程和连接到远程服务器的进程的信息。换句话说,要检查主机上的侦听端口和当前(TCP)连接,可以同时使用以下两个命令
1. netstat -p tcp -p udp
2. lsof -n -i4TCP -i4UDP
我想我会添加我的输入,希望它最终能帮助某人。
在macOS上,这里有一个简单的方法,可以通过netstat获取监听特定端口的进程ID。此示例查找端口80上提供内容的进程:
查找端口80上运行的服务器
netstat -anv | egrep -w [.]80.*LISTEN
样本输出
tcp4 0 0 *.80 *.* LISTEN 131072 131072 715 0
最后一列的第二个是PID。在上面,它是715。
选项
-a-显示所有端口,包括服务器使用的端口
-n-显示数字,不要查找名称。这使命令更快
-v-verbose输出,以获取进程ID
-w-搜索单词。否则,命令将返回端口8000和8001的信息,而不仅仅是“80”
LISTEN-仅为LISTEN模式下的端口(即服务器)提供信息
签出此项目/工具:procs
在MacOs上安装:brew安装过程
这允许您控制使用proc显示的内容。
要查看TCP/UDP端口,请在安装工具后将以下内容添加到~/.procs.toml。
[[columns]]
kind = "TcpPort"
style = "BrightYellow|Yellow"
numeric_search = true
nonnumeric_search = false
align = "Left"
[[columns]]
kind = "UdpPort"
style = "BrightGreen|Green"
numeric_search = false
nonnumeric_search = true
align = "Left"
以下是示例输出:
对MichałKalinowski的回答稍有改进(我没有足够的声誉在那里留下评论):如果您试图发现进程正在监听一个编号为255及以下的端口,grep命令可能会打印与IP地址相关的行,而这些行与期望的结果不符。对于任何编号的端口,grep命令也可能错误地匹配设备的MAC地址或PID。为了改进这一点,我建议将命令更改为grep--color“:$1”
推荐文章
- 警告用户/local/mysql/data目录不属于mysql用户
- UDP和TCP比起来快多少?
- 在Mac OS X上使用鼠标聚焦(加上自动提升)
- 我在哪里可以找到Mac OS X Lion的“make”程序?
- 当我没有Mac的时候,在Mac/Safari上测试web应用程序
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码
- my.cnf文件在macOS上的位置
- 如何从Mac OS X上卸载MySQL ?
- 查找当前可执行文件的路径,不包含/proc/self/exe
- 在Mac上安装R -警告消息:设置LC_CTYPE失败,使用“C”
- 为什么cURL返回错误“(23)Failed writing body”?
- 节点和错误:EMFILE,打开的文件太多
- TCP连接的最大数据包大小
- 如何使用命令行工具为Mac OS X创建一个漂亮的DMG ?
- 由于环境错误无法安装包:[Errno 13]