在Linux上,我可以使用netstat-pntl | grep$PORT或fuser-n tcp$PORT来确定哪个进程(PID)正在侦听指定的tcp端口。如何在Mac OS X上获得相同的信息?
当前回答
对于macOS,我使用两个命令一起显示有关在机器上侦听的进程和连接到远程服务器的进程的信息。换句话说,要检查主机上的侦听端口和当前(TCP)连接,可以同时使用以下两个命令
1. netstat -p tcp -p udp
2. lsof -n -i4TCP -i4UDP
我想我会添加我的输入,希望它最终能帮助某人。
其他回答
lsof -n -i | awk '{ print $1,$9; }' | sort -u
这显示了谁在做什么。删除-n以查看主机名(速度稍慢)。
直到macOS 13 Ventura,每个版本的macOS都支持此功能:
sudo lsof-iTCP-sTCP:列表-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
}
然后,listing命令为您提供了一个在某个端口上侦听的进程列表,并为某个模式侦听smthgreps。
有了这一点,很容易询问特定的进程,例如监听dropbox或端口,例如监听22。
lsof命令有一些专门的选项来询问端口、协议、进程等,但就我个人而言,我发现上面的函数更方便,因为我不需要记住所有这些低级选项。lsof是一个非常强大的工具,但不幸的是使用起来不太舒服。
在OS X上,可以使用netstat的-v选项来提供相关的pid。
类型:
netstat -anv | grep [.]PORT
输出将如下所示:
tcp46 0 0 *.8080 *.* LISTEN 131072 131072 3105 0
PID是最后一列之前的数字,在本例中为3105
对于已列出的、已建立的和已关闭的端口
sudo lsof -n -i -P | grep TCP
仅适用于LISTEN端口
sudo lsof -n -i -P | grep LISTEN
对于特定的LISTEN端口,例如:端口80
sudo lsof -n -i -P | grep ':80 (LISTEN)'
或者,如果你只是想要一个简洁的摘要(没有描述服务/应用程序),请使用NETSTAT。好的一面是,不需要sudo
netstat -a -n | grep 'LISTEN '
解释使用的项目:
-n禁止显示主机名
-i表示IPv4和IPv6协议
-P省略端口名
-所有套接字的[over netstat]
-n[over netstat]不解析名称,将网络地址显示为数字
在High Sierra 10.13.3和Mojave 10.14.3上测试最后一个语法netstat也适用于linux
对于macOS,我使用两个命令一起显示有关在机器上侦听的进程和连接到远程服务器的进程的信息。换句话说,要检查主机上的侦听端口和当前(TCP)连接,可以同时使用以下两个命令
1. netstat -p tcp -p udp
2. lsof -n -i4TCP -i4UDP
我想我会添加我的输入,希望它最终能帮助某人。
推荐文章
- Linux相当于Mac OS X的“open”命令
- 如何在Mac上的命令行安装JQ ?
- 在Mac OS X上安装/升级gradle
- 如何在终端中提高光标速度?
- Objective-C中的自动引用计数不能防止或减少什么样的泄漏?
- 如何在Mac OS安装时停止MySQL ?
- PIP成功安装包,但在命令行中找不到可执行文件
- 无法在Mac OS X 10.9上安装Lxml
- 在OS X上使用sed进行就地编辑
- MacVim和普通Vim有什么区别?
- 查看保存的NSUserDefaults的简单方法?
- (Mac) -bash: __git_ps1:命令未找到
- 如何创建Bash别名?
- Java/JDK的苹果硅芯片
- Virtualenvs中的破引用