📅  最后修改于: 2023-12-03 15:07:43.997000             🧑  作者: Mango
如果你是一个 Mac 用户并且在编程中使用了一些本地服务器或者其他需要开启端口的程序,那么你可能会遇到这样的问题:端口被占用了,无法正常运行程序。
本文将介绍如何在 Mac 上通过 Shell/Bash 命令来释放一个端口。
首先,我们需要查看当前系统中哪些端口被占用了。我们可以使用 lsof
命令来查看:
lsof -i :<端口号>
例如,我们想要查看 8000 端口是否被占用,可以执行以下命令:
lsof -i :8000
如果该端口没有被占用,你会得到类似下面这样的输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
如果该端口被占用了,你会得到类似下面这样的输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 3616 user 20u IPv6 0x7d51580549d8a07 0t0 TCP *:8000 (LISTEN)
其中,node
表示占用该端口的程序名称,3616
表示该程序的 PID,user
表示运行该程序的用户名,IPv6
表示使用的 IP 版本,0x7d51580549d8a07
表示该程序的 IP 地址,TCP
表示使用的协议类型,*:8000
表示对外开放的端口号(第一个 *
表示所有 IP 地址都可以访问,如果是具体的 IP 地址,这里会显示该 IP 地址)。
如果我们想要释放一个被占用的端口,我们可以使用 kill
命令来杀死占用该端口的程序进程。需要注意的是,在使用 kill
命令前,请先确认你确实想要杀死这个进程,因为进程被杀死后,可能会导致正在运行的程序崩溃。
具体执行方式为:
kill <PID>
例如,如果我们想要释放 8000 端口,可以先使用 lsof
命令查看占用该端口的程序的 PID,然后再将其杀死:
lsof -i :8000 # 查看占用 8000 端口的程序的 PID
kill 3616 # 杀死 PID 为 3616 的程序进程
如果执行成功,命令行不会给出任何信息。如果执行失败,可能会给出类似“操作不允许”之类的错误消息,此时可以尝试使用 sudo
命令以管理员身份来执行。
如果你频繁需要执行上述命令,建议将其封装成一个脚本或者别名,方便使用。
以上就是在 Mac 中释放一个端口的方法。作为一名程序员,你应该时刻了解你的系统状况,并善于使用命令行工具来进行调试和管理。