<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Port-Scan on NetUtil</title>
    <link>https://www.netutil.app/zh-hans/tags/port-scan/</link>
    <description>Recent content in Port-Scan on NetUtil</description>
    <generator>Hugo</generator>
    <language>zh-Hans</language>
    <lastBuildDate>Sat, 16 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.netutil.app/zh-hans/tags/port-scan/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>如何在Mac上检查开放端口：lsof、netstat和nc</title>
      <link>https://www.netutil.app/zh-hans/blog/check-port-open-mac/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.netutil.app/zh-hans/blog/check-port-open-mac/</guid>
      <description>&lt;p&gt;您运行了&lt;code&gt;rails server&lt;/code&gt;但页面无法加载，或者您尝试连接远程服务器却没有任何响应。第一个问题永远是：这个端口真的开着吗？&lt;/p&gt;&#xA;&lt;p&gt;在Mac上检查端口状态只需一条命令。关键是要知道：检查自己的Mac还是检查远程主机，应该使用不同的命令。&lt;/p&gt;&#xA;&lt;h2 id=&#34;检查本机开放端口&#34;&gt;检查本机开放端口&lt;/h2&gt;&#xA;&lt;p&gt;这是开发者最常遇到的情况。您的开发服务器应该运行在3000端口，但浏览器说无法连接。这个端口根本在监听吗？&lt;/p&gt;&#xA;&lt;h3 id=&#34;lsof--i-端口最快的答案&#34;&gt;lsof -i :端口（最快的答案）&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -i :3000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果有程序在监听，您会看到如下输出：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME&#xA;ruby     8421  aaron  13u  IPv4 0x3f8a2b4c      0t0  TCP *:3000 (LISTEN)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果输出为空，说明没有任何程序绑定到该端口。要么您的Rails服务器没有运行，要么它启动在了其他端口上。&lt;/p&gt;&#xA;&lt;p&gt;检查8080端口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -i :8080&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查80端口（需要sudo，因为这是特权端口）：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo lsof -i :80&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;lsof--i--grep-listen一次看到所有端口&#34;&gt;lsof -i | grep LISTEN（一次看到所有端口）&lt;/h3&gt;&#xA;&lt;p&gt;要查看Mac当前正在监听的所有端口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -i &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep LISTEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出显示所有拥有开放监听端口的进程：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ruby      8421  aaron  13u  IPv4  TCP *:3000 (LISTEN)&#xA;node      9102  aaron  21u  IPv6  TCP *:8080 (LISTEN)&#xA;postgres  1234  aaron   5u  IPv4  TCP localhost:5432 (LISTEN)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意&lt;code&gt;localhost:5432&lt;/code&gt;和&lt;code&gt;*:3000&lt;/code&gt;的区别。Postgres只接受来自同一台机器的连接，而Rails接受来自网络中任何地方的连接。当您试图从另一台设备连接时，这个区别至关重要。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
