Mac 80端口占用

问题

tomcat 默认端口是 8080,但是我的一个程序必须用 80 端口启动,才能根据域名去 cas 校验,在idea 中设置了 tomcat 的启动端口是 80 后,并没有起作用,报了 “80端口占用” 的错误,可是也没查到 80 端口被那个程序占用,后来发现是 80 端口没有打开。

原因

由于 Mac 系统限制非root用户不能启动1024以下端口,而我们平时使用Mac一般都是非root用户,所以如果想启动80端口必须用root用户。

比如在启动 nginx 时,必须用命令 sudo nginx

具体步骤

  • sudo vim /etc/pf.conf

  • 添加 rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080 到 pf.conf文件的 rdr-anchor "com.apple/*" 这一行后面。

  • 其中 lo0 通过 ifconfig 看自己那个设备绑定的是 127.0.0.1, lo0是这个网络设备的名字。 8080是要转发的端口

  • sudo pfctl -f /etc/pf.conf

  • sudo pfctl -e

这时,应用启动8080端口即可以,访问的话就可以通过80端口来访问了!

注意:每次重启过后如果要转发都要执行上面最后两条命令

参考文献

Mac OS普通用户启动80端口

macOS 上查看端口占用情况,可以使用 `lsof` 和 `netstat` 命令。以下是具体的命令和方法: ### 使用 `lsof` 查看端口占用 `lsof` 是一个常用的工具,用于列出当前系统打开的文件,其中包括网络连接。 #### 基本语法 ```bash lsof -i :<端口号> ``` 例如,要检查 8080 端口是否被占用: ```bash lsof -i :8080 ``` 如果端口占用,输出将显示占用端口的进程信息,包括进程名称、PID(进程 ID)、用户等[^1]。 #### 更详细的查询 对于更复杂的场景,可以结合 `-n` 和 `-P` 参数以避免 DNS 查询并直接显示端口号: ```bash sudo lsof -n -P | grep :<端口号> ``` 例如,查找占用 9000 端口的服务: ```bash sudo lsof -n -P | grep :9000 ``` 这将返回类似以下的结果: ``` php-fpm 1271 dotatong 9u IPv4 ... TCP 127.0.0.1:9000 (LISTEN) ``` 其中,`php-fpm` 表示服务名,`1271` 是对应的 PID[^3]。 --- ### 使用 `netstat` 查看端口占用 虽然 `netstat` 已逐渐被废弃,但在某些环境中仍然可用。 #### 基本语法 ```bash netstat -tuln | grep :<端口号> ``` 例如,检查 8080 端口是否被占用: ```bash netstat -tuln | grep :8080 ``` 此命令会列出监听状态下的所有 TCP/UDP 连接,并过滤出指定端口的信息[^1]。 --- ### 终止占用端口的进程 一旦找到占用目标端口的进程,可以通过其 PID 结束该进程。 #### 使用 `kill` 命令 获取到 PID 后,执行以下命令终止进程: ```bash kill -9 <PID> ``` 例如,终止 PID 为 1234 的进程: ```bash kill -9 1234 ``` 注意:强制终止进程可能会影响系统的正常运行,请谨慎操作[^2]。 --- ### 总结 - 推荐优先使用 `lsof` 命令,因为它功能强大且易于理解。 - 对于复杂需求,可结合 `sudo` 提升权限。 - 在确认无误后再终止不必要的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值