> For the complete documentation index, see [llms.txt](https://kerasnoone.gitbook.io/garnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kerasnoone.gitbook.io/garnet/gong-cheng-zhan/linux/chang-yong-gong-neng/duan-kou-zhan-yong-cha-kan.md).

# 端口占用查看

## lsof

查看某一个端口号的占用情况, 其中`PORT`是具体的端口号:

```bash
lsof -i:PORT
```

如果该端口被占用, 就以列表的形式展示该端口的信息. 每列的意义如下:

* `COMMAND`: 占用端口进程的名称
* `PID`: 进程ID
* `USER`: 进程拥有者
* `FD`: 文件描述符, 应用程序通过文件描述符识别该文件, 如cwd, txt等
* `TYPE`: 文件类型, 如DIR, REG等
* `DEVICE`: 指定磁盘的名称
* `SIZE`: 文件的大小
* `NODE`: 索引节点
* `NAME`: 打开文件的确切名称

## netstat

可以使用`netstat`结合管道操作和`grep`, 用于查看指定端口号的进程情况:

```bash
netstat -tunlp | grep PORT
```

`netstat`使用到的几个参数的含义:

* `-t`: 仅显示tcp相关选项
* `-u`: 仅显示udp相关选项
* `-n`: 拒绝显示别名, 能显示数字的全部转化为数字
* `-l`: 仅列出在Listen(监听)的服务状态
* `-p`: 显示建立相关链接的程序名

在得到的结果列表中, 有两列关键信息:

* `PID/Program name`: 占用该端口的进程ID和进程名称
* `Local Address`: 端口监听的完整地址

## 参考资料

* [linux下查看端口占用](https://www.cnblogs.com/zjfjava/p/10513399.html)
