在 Linux 使用过程中,需要了解当前系统开放了哪些埠,并且要检视开放这些埠的具体程序和使用者,可以通过 netstat 命令进行简单查询
netstat 命令各个引数说明如下:
-t : 指明显示 TCP 埠
-u : 指明显示 UDP 埠
-l : 仅显示监听套接字 (所谓套接字就是使应用程式能够读写与收发通讯协议 (protocol) 与资料的程式)
-p : 显示程序识别符号和程式名称,每一个套接字/埠都属于一个程式。
-n : 不进行 DNS 轮询,显示 IP(可以加速操作)
即可显示当前站群服务器上所有埠及程序服务,于 grep 结合可检视某个具体埠及服务情况··
netstat -ntlp   //检视当前所有 tcp 埠·
netstat -ntulp |grep 80   //检视所有 80 埠使用情况·
netstat -ntulp | grep 3306   //检视所有 3306 埠使用情况·
 
Linux 检视程式埠占用情况
使用命令:
ps -aux | grep tomcat
发现并没有 8080 埠的 Tomcat 程序。
使用命令:netstat –apn
检视所有的程序和埠使用情况。发现下面的程序列表,其中最后一栏是 PID/Program name
发现 8080 埠被 PID 为 9658 的 Java 程序占用。
进一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 检视
就可以明确知道 8080 埠是被哪个程式占用了!然后判断是否使用 KILL 命令干掉!
方法二:直接使用 netstat   -anp   |   grep  portno
即:netstat -anp|grep 8080
netstat -anp|grep 8080 –> tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      28500/java
ps -aux | grep 28500  –> r/local/tomcat9-jforum/tomcat
安装 lsof list open files//—也可以  netstat -tunlp|grep 埠号  netstat -anp|grep 埠号
yum install lsof
lsof -i:8080 检视 8080 埠占用
lsof abc.txt 显示开启档案 abc.txt 的程序
lsof -c abc 显示 abc 程序现在开启的档案
lsof -c -p 1234 列出程序号为 1234 的程序所开启的档案
lsof -g gid 显示归属 gid 的程序情况
lsof +d /usr/local/ 显示目录下被程序开启的档案
lsof +D /usr/local/ 同上,但是会搜寻目录下的目录,时间较长
lsof -d 4 显示使用 fd 为 4 的程序
lsof -i 用以显示符合条件的程序情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 –> IPv4 or IPv6
protocol –> TCP or UDP
hostname –> Internet host name
hostaddr –> IPv4 地址
service –> /etc/service 中的 service name (可以不止一个)
port –> 埠号 (可以不止一个)
lsof -i //显示所有开启的埠
lsof -i:80 //显示所有开启 80 埠的程序
lsof -i -U //显示所有开启的埠和 UNIX domain 档案
其实我一般这样用:
[root@VM_39_230_centos bin]# lsof -i:3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  16422 mysql   19u  IPv6 148794      0t0  TCP *:mysql (LISTEN)
mysqld  16422 mysql   39u  IPv6 643698      0t0  TCP localhost:mysql->localhost:36582 (ESTABLISHED)
mysqld  16422 mysql   45u  IPv6 643699      0t0  TCP localhost:mysql->localhost:36584 (ESTABLISHED)
mysqld  16422 mysql   46u  IPv6 643700      0t0  TCP localhost:mysql->localhost:36586 (ESTABLISHED)
mysqld  16422 mysql   47u  IPv6 643702      0t0  TCP localhost:mysql->localhost:36588 (ESTABLISHED)
mysqld  16422 mysql   48u  IPv6 643704      0t0  TCP localhost:mysql->localhost:36590 (ESTABLISHED)
java    17302  root  122u  IPv4 643695      0t0  TCP localhost:36582->localhost:mysql (ESTABLISHED)
java    17302  root  123u  IPv4 643701      0t0  TCP localhost:36588->localhost:mysql (ESTABLISHED)
java    17302  root  124u  IPv4 643696      0t0  TCP localhost:36586->localhost:mysql (ESTABLISHED)
java    17302  root  125u  IPv4 643697      0t0  TCP localhost:36584->localhost:mysql (ESTABLISHED)
java    17302  root  126u  IPv4 643703      0t0  TCP localhost:36590->localhost:mysql (ESTABLISHED)
或者
[root@VM_39_230_centos bin]# netstat -ntulp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      16422/mysqld
 
找到 pid  然后
[root@VM_39_230_centos bin]# ps -aux | grep 16422
mysql    16422  0.0 47.7 1340428 485944 ?      Sl   Jun29   1:46 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib64/mysql/plugin –log-error=/var/lib/mysql/VM_39_230_centos.err –pid-file=/var/lib/mysql/VM_39_230_centos.pid
root     25713  0.0  0.0 112616   700 pts/0    R+   17:04   0:00 grep –color=auto 16422