通过netstat命令查看Linux的端口占用
Kudō Shin-ichi 2024-07-20 10:07:08 阅读 78
一、netstat
完整写作<code>network statistics,简写为netstat
,常用的几个参数为l
、n
、t
、u
、p
。
-l : 仅展示监听状态下的程序(state 为LISTEN)。
-n :会使用ip+端口的方式,来进行地址的描述。不使用-n就会变成服务器的名称+端口号 或者ip地址+协议。
-t与-u: 查看tcp协议和udp协议。
-p : 会把程序占用的进程名称和PID(program id,进程ID)。
netstat -lntup | head
:查看当前几个端口使用情况。
netstat -lntup
或者netstat -tlunp
、也就是说参数-tlunp
的顺序改变效果相同:查看启动的线程。
netstat -lntup | grep nginx
:查看启动的线程中是否有名称中带有nginx的。
来自我这篇文章:Windows11与CentOS7.9 2009下安装配置nginx后启动整个项目中2.1 下载与安装配置
//6、查看nginx的进程
yum install net-tools -y
netstat -lntup | grep nginx
//查看启动的nginx进程
ps -ef | grep nginx
yum install lsof
lsof -i :80
netstat -lntup | grep nginx 截图
:
<code>netstat -lntup | grep docker:查看启动的线程中是否有名称中带有docker的。
(Java相关
)
netstat -tlunp | grep java
:查看启动的进程中是否有名称中带有java的,会显示其PID值(进程ID)
。
ps -p PID值 -f
:例如ps -p 18391 -f
,就是显示哪个程序使用了java,一般为java -jar
命令,例如java -jar testdemo-0\.0\.1-SNAP.jar
。
ps -p PID值 -ef
:显示的更加详细。
find . -name "testdemo-0\.0\.1-SNAP*"
:查询"testdemo-0.0.1-SNAP*"
文件的位置,*为通配符;
\.
表示转义为.
,所以,find . -name "demo-0\.0\.1-SNAP*"
就是find . -name "demo-0.0.1-SNAP*"
相关
:CentOS: $‘\r‘: command not found
Windows11与CentOS7下配置与检测JDK与Maven环境变量-中安装jdk-8u371-linux-x64.tar.gz
netstat -tlnp
:查看当前所有的tcp端口。
netstat -lntup |grep 80
:查看所有80端口使用情况。
netstat tlnp | grep 端口号
:查看此端口号的程序是否启动,例如netstat tlnp | grep 80
。
//netstat -ano | findstr "端口号"
netstat -ano | findstr "81"
或netstat -ano | findstr 81
[root@localhost ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 2324/docker-proxy
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1566/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 869/sshd: /usr/sbin
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 867/cupsd
tcp6 0 0 :::5672 :::* LISTEN 868/beam.smp
tcp6 0 0 :::1521 :::* LISTEN 2329/docker-proxy
tcp6 0 0 :::4369 :::* LISTEN 1566/epmd
tcp6 0 0 ::1:631 :::* LISTEN 867/cupsd
tcp6 0 0 :::22 :::* LISTEN 869/sshd: /usr/sbin
udp 0 0 0.0.0.0:41722 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 793/chronyd
udp6 0 0 :::5353 :::* 763/avahi-daemon: r
udp6 0 0 :::59094 :::* 763/avahi-daemon: r
udp6 0 0 ::1:323 :::* 793/chronyd
[root@localhost ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 2324/docker-proxy
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1566/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 869/sshd: /usr/sbin
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 867/cupsd
tcp6 0 0 :::5672 :::* LISTEN 868/beam.smp
tcp6 0 0 :::1521 :::* LISTEN 2329/docker-proxy
tcp6 0 0 :::4369 :::* LISTEN 1566/epmd
tcp6 0 0 ::1:631 :::* LISTEN 867/cupsd
tcp6 0 0 :::22 :::* LISTEN 869/sshd: /usr/sbin
udp 0 0 0.0.0.0:41722 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 793/chronyd
udp6 0 0 :::5353 :::* 763/avahi-daemon: r
udp6 0 0 :::59094 :::* 763/avahi-daemon: r
udp6 0 0 ::1:323 :::* 793/chronyd
[root@localhost ~]# netstat -lntup | grep nginx //查看启动的线程中是否有名称中带有nginx的
[root@localhost ~]# netstat -lntup | grep docker //查看启动的线程中是否有名称中带有docker的
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 2324/docker-proxy
tcp6 0 0 :::1521 :::* LISTEN 2329/docker-proxy
[root@localhost ~]#
说明
:
0.0.0.0
:代表本机上所有可用的任意地址, 0 0.0.0.0:1521
表示本机上所有地址的1521端口
, 0 0.0.0.0:15672
表示表示本机上所有地址的15672端口
。
tcp 0 0 0.0.0.0:1521
:表示监听所有地址的TCP1521端口。
state参数含义
:
LISTEN:(Listening for a connection.)侦听来自远方的TCP端口的连接请求
SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:(Connection established.)代表一个打开的连接
FIN-WAIT-1:(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求
CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求
CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认
LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:(Connection is closed.)没有任何连接状态
二、其他排查命令
2.1 命令相关文章
来自我这篇文章
:查看CentOS版本及系统位数与设置CentOS 7.9 2009 防火墙配置放开端口的命令与过程中的2.1 命令汇总
//其他排查命令
//查看启动的nginx进程
ps -ef | grep nginx
//查看端口占用信息
//1、安装lsof
//执行lsof -i:8083命令时报错-bash: lsof: command not found,就需要安装lsof
yum install lsof
//2、查看端口占用信息
lsof -i:端口
//例如将nginx默认的80端口修改为8083端口前,查看8083端口有无被占用
lsof -i:8083
losf(list open files 列出操作系统的打开的文件)的其他组合命令:
//显示此文件名的进程。
lsof 文件名
//显示该进程值对应的进程打开的文件。
lsof -p PID(进程ID)值
来自我这篇文章
:Windows11与CentOS7.9 2009下安装配置nginx后启动整个项目中1.2.1 方法1-直接修改nginx的默认端口值(推荐)
//1.2.1 方法1-直接修改nginx的默认端口值(推荐)
//1-进入nginx解压目录
d:
cd D:\develop\nginx-1.24.0\
//2-启动nginx
start nginx
//3-查看nginx进程 如果显示 信息:没有运行的任务匹配指定标准 执行第4步
tasklist /fi "imagename eq nginx.exe"
//4-查看端口占用,根据端口号81,获取PID(进程ID)
netstat -ano | findstr "端口号"
netstat -ano | findstr "81"或netstat -ano | findstr 81
//5-查看PID对应的进程
tasklist | findstr "进程ID"
//1.2.2 方法2-结束占用80端口的进程
//结束占用80端口的进程:
/1-进入nginx解压目录
d:
cd D:\develop\nginx-1.24.0\
//2-启动nginx
start nginx
//3-查看nginx进程 如果显示 信息:没有运行的任务匹配指定标准 执行第4步
tasklist /fi "imagename eq nginx.exe"
//4-查看端口占用,根据端口号80,获取PID(进程ID)
netstat -ano | findstr "端口号"
netstat -ano | findstr "80"或netstat -ano | findstr 80
//5-根据PID结束进程
taskkill /F /PID PID值
或者
taskkill -f -pid PID值
或者(可能会直接结束该程序,相当于任务管理器中结束)
taskkill /f /t /im PID值
其他相关文章
:Web server failed to start. Port 8080 was already in use
2.2 常用命令
ps -ef | grep nginx
// 从根目录开始找nginx.conf
find / -name nginx.conf
[root@freedomdjc local]# find / -name nginx.conf
/var/lib/docker/overlay2/70c0652799a9d95fb4ee7e52e35e0f3b2ea2e786264bbbf29fbfedc16ac3acb2/diff/etc/nginx/nginx.conf
/usr/local/nginx-1.24.0/conf/nginx.conf
/usr/local/nginx1.24.0/conf/nginx.conf
/opt/docker-compose/ruoyicloudplus/docker/nginx/conf/nginx.conf
/docker/nginx/conf/nginx.conf
[root@freedomdjc local]#
//新建目录
/data,并且进入/data
目录,编辑uwsgi.ini文件
mkdir /data&&cd /data &&vim uwsgi.ini
//移动
/root/20231029/GetServerInfo.py 文件到/data目录中。(/root/20231029/GetServerInfo.py已经不存在了
,若是cp命令复制,GetServerInfo.py就会存在
)
mv /root/20231029/GetServerInfo.py /data
//查看系统默认安装的python的位置
whereis python
//查看系统默认安装的python的位置
[root@iZbp1fnrewknornmqkhqpiZ ~]# whereis python
python: /usr/bin/python3.6m-x86_64-config /usr/bin/python3.6-config /usr/bin/python3.6m /usr/bin/python /usr/bin/python3.6m-config /usr/bin/python2.7 /usr/bin/python3.6 /usr/lib/python2.7 /usr/lib/python3.6 /usr/lib64/python2.7 /usr/lib64/python3.6 /etc/python /usr/local/lib/python3.6 /usr/include/python3.6m /usr/include/python2.7 /usr/share/man/man1/python.1.gz
[root@iZbp1fnrewknornmqkhqpiZ ~]#
//查看python在/usr/bin目录中的内容
cd /usr/bin
ll python*
//查看python在/usr/bin目录中的内容
[root@iZbp1fnrewknornmqkhqpiZ bin]# cd /usr/bin
[root@iZbp1fnrewknornmqkhqpiZ bin]# ll python*
lrwxrwxrwx 1 root root 7 Jul 18 17:31 python -> python2
lrwxrwxrwx 1 root root 9 Jul 18 17:31 python2 -> python2.7
-rwxr-xr-x 1 root root 7144 Jun 20 19:37 python2.7
lrwxrwxrwx 1 root root 9 Jul 18 17:29 python3 -> python3.6
-rwxr-xr-x 2 root root 11336 Jun 20 19:55 python3.6
lrwxrwxrwx 1 root root 17 Jul 18 17:29 python3.6-config -> python3.6m-config
-rwxr-xr-x 2 root root 11336 Jun 20 19:55 python3.6m
-rwxr-xr-x 1 root root 173 Jun 20 19:54 python3.6m-config
-rwxr-xr-x 1 root root 3403 Jun 20 19:39 python3.6m-x86_64-config
lrwxrwxrwx 1 root root 16 Jul 18 17:29 python3-config -> python3.6-config
[root@iZbp1fnrewknornmqkhqpiZ bin]#
python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。
过程可参考
:Centos7安装并配置Python3环境
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。