Linux怎么查看端口占用情况? lsof命令快速查找端口占用进程

不幸的是,当谈到检查 Linux 系统上的端口繁忙度时,我们确实需要提到 lsof 命令。
这个东西很多人都用,非常实用。
首先,如果你还没有安装lsof,则需要安装它。
例如,在 Debian/Ubuntu 系统上,您可以使用 sudo apt install lsof 进行安装。
CentOS/RHEL系统更简单:sudo yum install lsof。
对于 Fedora 或较新版本的 RHEL,您必须使用 sudo dnf install lsof。

然后,如果您想检查特定端口,例如 8 08 0,只需 sudo lsof -i:8 08 0。
我以前也遇到过这种情况。
检查了node.js服务,发现它占用了8 08 0端口。

输出结果中有几个关键数据: COMMAND是占用该端口的程序名称,例如node; PID是进程ID,例如1 2 3 4 5 ; USER - 运行进程的用户; TYPE — 网络类型,例如 IPv6 ; NAME 是端口的状态,例如 TCP:8 08 0(LISTEN)。

如果你想检查所有 TCP 连接,只需 lsof -iTCP。

有时您不知道哪个端口有问题。
首先你可以通过netstat或者ss检查所有监听端口。
例如,使用netstat,sudo netstat -tuln | grep LISTEN,此命令将列出所有正在侦听的 TCP 端口。
复用ss时也是如此。
sudo ss -tuln 使输出更加简洁。

确定端口后,使用lsof查找进程,sudo lsof -i:8 08 0。
那么,如果你想终止一个占用端口的进程,你就要小心了。
例如,如果发现PID为1 2 3 4 5 ,则使用命令sudo Kill -9 1 2 3 4 5 来杀死它。
但说实话,这个-9 强制终止信号可能会导致数据丢失或者服务失败,所以我当时并没有考虑到这一点,所以我首先确定了这个进程是否真的没有用。

最后,lsof还有其他功能,比如查看用户打开的文件、特定目录下的文件占用情况、网络连接情况等,这真是一个综合性的东西。

总的来说,lsof是一个很好的工具,可以帮助您快速检测端口占用问题,并使故障排除更加高效。
但是,请小心不要意外关闭关键服务。

linux怎么查看程序占用哪个端口号

哦,对了,对了,那个……Linux系统中查看程序占用的端口号的方法有很多种。

我们来谈谈netstat,它是一个古老且非常常用的工具。
如果输入netstat -tuln,后跟grep,像grep nginx一样,就可以看到nginx进程占用了哪个端口。
你看,-t是TCP,-u是UDP,-l是监听,-n是数字形式的端口。
如果你不添加它,它会尝试将其解析为名称,这有时会很慢。

那就是呃...这也很简单。
例如,如果你想查看8 0端口被谁占用,只需输入lsof -i :8 0即可。
如果你想查看 TCP,只需 lsof -i TCP:8 0。
输出中有一个PID。
谁使用它?这很简单。

现在很多人使用ss命令,它比netstat更快。
ss-纯| grep 进程名称,类似于netstat。
优点是速度快,下层直接和内核交互,分析也快。
而且它还有-p参数,可以让你直接看到进程,不用走任何弯路。
输出格式也很简单,适合编写脚本。

还有一个 /proc 文件系统,这也很有趣。
你首先需要知道PID是什么,例如使用ps aux | grep 进程名称来查找它。
然后查看PID /proc/中的fd目录。
里面有一个符号链接,指向套接字。
您可以使用 ls -l /proc/1 2 3 4 /fd 然后使用 grep socket 来查看哪个套接字文件。
但这种方法比较麻烦,一般不是首选。

所以你看,有几种方法。
如果您想快速查看,ss 或 lsof 都可以。
如果您正在编写一个自动检查的脚本,那么使用 ss -tulnp 并使用 awk 来提取进程名称和端口非常容易。
您可能需要在较旧的系统上使用 netstat,这取决于您的系统上是否可用该工具。
在深度调试时,/proc仍然可以使用。

但是...怎么说呢,这取决于你想在哪里使用它。

linux查看端口占用

直接访问有用信息:
使用 netstat 测试端口是最常见的。
只需输入 netstat-tuln。
添加 -t 表示 TCP、-u 表示 UDP、-l 表示监听、-n 表示数字格式。
结果有很多,需要你自己去想。

lsof直接定位被占用的进程。
输入lsof-i:端口号,例如lsof-i:8 0。
您可以查看谁正在使用该端口、PID 是什么以及用户是谁。
这是最正确的方法,但是你需要安装lsof。

ss 比 netstat 更快。
参数与netstat、ss-tuln相同。
使用 ss 可以节省主要网络上的时间。

nmap可以查看远程端口。
键入 nmap -p 主机名、端口号或 IP。
例如:nmap-p8 0 1 9 2 .1 6 8 .0.1 它适合在多台机器上进行测试,但不要扫描得太频繁,因为可能会被阻止。

注意:
要查看有关未侦听的端口或进程的详细信息,您需要 root 和 sudo 权限。

LSof 和 nmap 没有安装?使用 apt install lofnmap 进行安装。

LISTEN 处于监听状态并且 ESTABLISHED 已连接。
通过查看进程信息就可以找到问题所在。

对于本地查询,使用 lsof 或 ss,对于全局查询,使用 netstat,对于远程查询,使用 nmap。

你明白吗?