linux查看进程端口

记得有一次,我在公司服务器上遇到了一个奇怪的现象。
某个端口突然被占用,但不知道是哪个进程在使用。
当时我想,如果找不到原因,系统可能有很大问题。
我首先想到的是使用最常见的netstat命令并输入netstat -tulnp。
于是,屏幕上充斥着密密麻麻的信息,让我着迷。
然后我尝试将范围缩小到仅8 0端口,但仍然找不到特定的进程。
突然,我想起了lsof命令,输入了lsof -i:8 0。
嘿嘿,我找不到吗?原来使用的是PHP-FPM流程。
后来我也尝试了ss命令,发现它提供了比netstat更详细的信息,包括进程名和PID。
这让我对Linux系统管理有了更深入的了解。
等等,还有一件事,我突然想到,如果系统负载很高的话,查看进程端口信息可能需要一些技巧,比如使用grep来过滤特定的进程名。
不过,这几种方法都有各自的优点,关键是要根据实际情况灵活运用。

linux 查看某个进程 占用哪些端口

老实说,在 Linux 中检查哪些端口被特定进程占用是非常容易的。
我们先来说说最重要的事情。
使用 ps-ef|grepName 命令查找目标进程 ID。
例如,在我们去年运行的项目中,我们使用 ps-ef|grepnginx 来查找 nginx 服务的进程 ID。
还有一点就是,拿到进程ID后,可以使用netstat -nltp|greppid命令来查看进程占用的端口。
这就像我们去年的 3 ,000 个域名项目一样。
我们使用netstat-nltp|grep1 2 3 4 5 (1 2 3 4 5 是nginx进程ID)并立即看到端口信息。

一开始我以为只能用netstat,后来发现这是错误的。
事实上,ss命令也可以具有类似的功能,但较新的命令更常见。
等等,还有别的事。
有些人可能不知道lsof命令也很强大。
lsof-i-P-n|greppid可以直接查找端口信息,这在排查问题时特别有用。

最后,提醒一下,虽然这些命令更容易使用,但请注意,netstat 或 ss 命令在较新的系统上可能已被 ss 命令取代,所以不要盯着 netstat。
很多人并不关心这一点,但我认为值得一试。

Linux下查看一个进程占用了哪个端口的方法

记得上次在公司的数据中心,风扇呼呼地响,我蹲在服务器前,盯着屏幕。
如果你想查看 Hadoop namenode 去了哪里,首先需要知道它在哪里。
手指敲击着键盘,屏幕上出现了各种命令。
当时办公室的灯泡坏了,时断时续,让人头晕目眩。

首先,运行 ps -ef | grep hadoop 并逐行查看。
很长的一行的第二个字段是进程 ID。
例如,如果您看到 1 2 3 4 5 hadoop namenode,则 1 2 3 4 5 就是 ID。
如果太长,就必须来回滚动,这有点烦人。

后来我尝试了jps | grep 名称,速度更快。
1 2 3 4 5 名字直接出现在屏幕上,省去了很多麻烦。
这个技巧对于 Java 进程特别有效。
Hadoop 守护进程在 JVM 中运行。
小心使用这个方法。

后来有同学说pidof nome也可以。
输入命令,一按屏幕上就会出现一个数字,这就是pid。
简单直接。

最后,我知道了 pid,所以我使用 netstat -nap | grep 1 2 3 4 5 此命令列出所有端口,然后过滤进程 ID 1 2 3 4 5 例如,如果您看到 0.0.0.0:5 007 0 0.0.0.0: LISTEN 1 2 3 4 5 /java,则 5 007 0 是 namenode 端口。

连接Eclipse,输入5 007 0,配置一次就完成了。
namenode正在运行并且正在导入数据。
那时,灯泡已经修好了,阳光明媚,我的心感觉明亮了。

等一下,还有一件事。
上次我使用 ss -tulnp | grep 1 2 3 4 5 并成功了。
这更快。
ss 比 netstat 新,有时更快一些。
然而,许多人熟悉 netstat,因此他们可以使用其中任何一个。

突然我想,如果进程名变了或者有多个进程同名怎么办?比如两个Hadoop进程,一个namenode和一个datanode,如何区分?目前需要使用更具体的命令,例如netstat -nap | grep 5 007 0,直接查找端口,更加精确。
或者使用 jps -l 列出所有进程的全名然后选择。

这取决于场景。
为了简单起见,使用 jps 或 ps,为了更详细,使用 netstat 或 ss。
但是,如果系统进程太多,命令发出的行就会太长,你就必须用更少的页数来阅读它们,否则你的眼睛会眼花。