1. linux 查看端口占用
在项目的部署的时候,会遇到端口被占用的情况,需要我们先停下占用端口的进程,然后才能开启新的服务来使用这个端口,那么在linux上怎么查看端口被什么进程占用呢?
一、常用命令:
1,lsof -i:端口号
2,netstat -tunlp|grep 端口号
这两个命令都可以查看端口被什么进程占用。
lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。以root用户来执行lsof -i命令,如下图
lsof输出的每列的意义是:
COMMAND:进程的名称或者进程开启的方式
PID:进程id
USER:进程所有者
FD:文件描述符
TYPE:协议类型
DEVICE:端口号
SIZE/OFF:偏移
NODE:协议名
NAME:节点名
lsof -i:端口号,用于查看某一端口的占用情况,比如查看22号端口使用情况,lsof -i:22
netstat -tunlp用于显示tcp,udp的端口和进程等相关情况
命令里的t,u,n,l,p均有不同含义:
-t 仅显示和tcp相关的
-u 仅显示和udp相关的
-n 不限时别名,能显示数字的全部转换为数字
-l 仅显示出于Listen(监听)状态的
-p 显示建立这些连接的程序名
netstat -tunlp|grep 端口号,用于查看指定端口号的进程情况,如查看22端口的情况,netstat -tunlp|grep 22
2. 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命令干掉!
3. linux如何查看端口被哪个进程占用
1)使用lsof命令 lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件。在linux系统下,基本上所有的东西都可以被当作文件来用。socket当然也是一种文件了。所以lsof可以用来查找谁用了某一个端口。具体方法: lsof -i :port_nu...
4. linux如何查看端口被哪个进程占用
在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况。比如HTTP使用80端口,但当启动Apache时,却发现此端口正在使用。
这种情况大多数是由于软件冲突、或者默认端口设置不正确导致的,此时需要查看究竟哪个进程占用了端口,来决定进一步的处理方法。
查看端口占用情况的命令:lsof -i
1 [root@www ~]# lsof -i
2
3 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4 nginx 2333 root 6u IPv4 6242 TCP *:http (LISTEN)
5 nginx 2334 www 6u IPv4 6242 TCP *:http (LISTEN)
6 sshd 2349 root 3u IPv6 6283 TCP *:ndmp (LISTEN)
7 sshd 2349 root 4u IPv6 6286 TCP *:ssh (LISTEN)
这里返回了Linux当前所有打开端口的占用情况。第一段是进程,最后一列是侦听的协议、侦听的IP与端口号、状态。如果端口号是已知的常用服务(如80、21等),则会直接显示协议名称,如http、ftp、ssh等。
查看某一端口的占用情况: lsof -i:端口号
1 [root@www ~]# lsof -i:21
2
3 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4 pure-ftpd 2651 root 4u IPv4 7047 TCP *:ftp (LISTEN)
5 pure-ftpd 2651 root 5u IPv6 7048 TCP *:ftp (LISTEN)
这里显示出21号端口正在被pure-ftpd使用,状态是listen。
结束占用端口的进程:killall 进程名
虽然我们不建议用这种本末倒置的方法来解决冲突问题,但某些情况下还是可以直接结束掉占用进程的(比如重启Apache时进程没有完全退出,导致重启失败)
1 [root@www ~]# killall pure-ftpd
这样,所有的pure-ftpd进程都会被结束掉。
也可使用命令:
netstat -apn|grep <端口号>
例如:
Linux代码
[root@SonarServer1 user0]# netstat -apn|grep 80
tcp 0 0 :::80 :::* LISTEN 19408/java
找到进程号以后,再使用以下命令查看详细信息:
ps -aux|grep <进程号>
5. linux下如何查看端口被哪个进程占用
【1,】lsof -i
lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。以root用户来执行lsof -i命令,
【2,】lsof -i:端口号
lsof -i:端口号,用于查看某一端口的占用情况,比如查看22号端口使用情况,lsof -i:22
【3,】netstat -tunlp
netstat -tunlp用于显示tcp,udp的端口和进程等相关情况
【4,】netstat -tunlp|grep 端口号
netstat -tunlp|grep 端口号,用于查看指定端口号的进程情况,如查看22端口的情况,netstat -tunlp|grep 22
6. linux中怎样查看占用8080端口的进程
1,使用lsof命令,使用IPv4协议的局域网:执行命令: lsof -Pnl +M -i4|grep 8080
输出结果: java 1419 1401 IPv4 6793357
2,先使用netstat命令,再用 ps命令。
执行命令:netstat -anp|grep 8080
输出结果:tcp 0 0 :::8080
执行命令: ps -ef | grep 12006输出结果: root 12886 12851 0 Dec09 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m......
7. linux 查找端口被哪个进程使用
你好,
方法:
1,使用netstat 和lsof命令,并用grep来过滤你需要查看的端口。
2,例:查看tcp有哪些端口打开了:
netstat -a| grep tcp然后查看哪个进程占用了这些端口:
lsof -i如果要查看某个端口,比如80端口是哪个进程:
lsof -i | grep :80
8. linux下查看某一端口被哪个进程占用
1)使用lsof命令
lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件。在linux系统下,基本上所有的东西都可以被当作文件来用。socket当然也是一种文件了。所以lsof可以用来查找谁用了某一个端口。具体方法:
lsof -i :port_number |grep "(LISTEN)"
-i是用来查找和网络相关的文件,":"号是必须的,它是标志你查找的是一个端口。port_number就是你要查找的端口号,譬如你要查找是否 有程序占用了oracle的监听端口1521,就可以使用lsof -i :1521 |grep "(LISTEN)"。如果有程序已经占用了,那么下面打印的第二个字段就是该程序的进程id,第一个字段是进程的名字。
如果只有losf -i :port_number可能会查到很多应用程序,但这些程序实际并没有占用你指定的端口,这些端口只是连接到本机器或者别的机器的该端口。所以要grep "(LISTEN)“,因为一个端口只可能被一个程序占用的,所以这种方法是可靠的。
2)使用netstat 命令
大家一定对这个命令比较熟悉了,可能你从没有想到用到来查找哪一个程序的占用了指定的端口。但是netstat -an 的确提供了这种功能。所以有问题了一定要想到先去查找man手册,不过说实话,某些man手册写得让中国人看不懂,那没有办法了,就googe或者 一下吧。
执行man netstat命令,你会发现netstat 提供了'-p'的选项,这个选项的功能是告诉你哪个程序占用了该端口,但是她提供的形式比较古怪是以pid/process_name提供的。pid当然 是进程id了,process_name是进程的命令,中间以'/'号分隔。
和上面的原因一样,我们只查找listen的端口,netstat 给我们提供了-l的选项,这个选项不是默认的选项。
下面以1521端口来看怎么查找到该程序,我们使用下面的命令:
netstat -lnp|awk 'BEGIN{prt=":1521$"}{if ($4 ~ prt) print $0}'
在这里使用awk来匹配第4个字段的模式是为了避免误判。
9. linux如何查看端口被哪个进程占用
1)使用lsof命令
lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件。在linux系统下,基本上所有的东西都可以被当作文件来用。socket当然也是一种文件了。所以lsof可以用来查找谁用了某一个端口。具体方法:
lsof
-i
:port_number
|grep
"(LISTEN)"
-i是用来查找和网络相关的文件,":"号是必须的,它是标志你查找的是一个端口。port_number就是你要查找的端口号,譬如你要查找是否
有程序占用了oracle的监听端口1521,就可以使用lsof
-i
:1521
|grep
"(LISTEN)"。如果有程序已经占用了,那么下面打印的第二个字段就是该程序的进程id,第一个字段是进程的名字。
如果只有losf
-i
:port_number可能会查到很多应用程序,但这些程序实际并没有占用你指定的端口,这些端口只是连接到本机器或者别的机器的该端口。所以要grep
"(LISTEN)“,因为一个端口只可能被一个程序占用的,所以这种方法是可靠的。
2)使用netstat
命令
大家一定对这个命令比较熟悉了,可能你从没有想到用到来查找哪一个程序的占用了指定的端口。但是netstat
-an
的确提供了这种功能。所以有问题了一定要想到先去查找man手册,不过说实话,某些man手册写得让中国人看不懂,那没有办法了,就googe或者
一下吧。
执行man
netstat命令,你会发现netstat
提供了'-p'的选项,这个选项的功能是告诉你哪个程序占用了该端口,但是她提供的形式比较古怪是以pid/process_name提供的。pid当然
是进程id了,process_name是进程的命令,中间以'/'号分隔。
和上面的原因一样,我们只查找listen的端口,netstat
给我们提供了-l的选项,这个选项不是默认的选项。
下面以1521端口来看怎么查找到该程序,我们使用下面的命令:
netstat
-lnp|awk
'BEGIN{prt=":1521$"}{if
($4
~
prt)
print
$0}'
在这里使用awk来匹配第4个字段的模式是为了避免误判。