在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