使用lsof命令:lsof-i:port_number|grep(LISTEN);-i是用来查找和网络相关的文件,:号是必须的,它是标志你查找的是一个端口。port_number就是你要查找的端口号,譬如你要查找是否有程序占用了oracle的监听端口1521,就可以使用lsof-i:1521|grep(LISTEN)。如果有程序已经占用了,那么下面打印的第二个字段就是该程序的进程id,第一个字段是进程的名字。
有时启动应用时会发现端口已经被占用,或者是感觉有些端口自己没有使用却发现是打开的。这时我们希望知道是哪个应用/进程在使用该端口。\x0d\CentOS下可以用netstat或者lsof查看,Windows下也可以用netstat查看,不过参数会不同\x0d\Linux:\x0d\netstat-nap#会列出所有正在使用的端口及关联的进程/应用\x0d\lsof-i:portnumber#portnumber要用具体的端口号代替,可以直接列出该端口听使用进程/应用\x0d\一、检查端口被哪个进程占用\x0d\代码如下复制代码\x0d\\x0d\netstat-lnp|grep88#88请换为你的apache需要的端口,如:80\x0d\\x0d\SSH执行以上命令,可以查看到88端口正在被哪个进程使用。如下图,进程号为1777。\x0d\\x0d\二、查看进程的详细信息\x0d\ps1777\x0d\SSH执行以上命令。查看相应进程号的程序详细路径。如下图。\x0d\\x0d\三、杀掉进程,重新启动apache\x0d\代码如下复制代码\x0d\kill-91777#杀掉编号为1777的进程(请根据实际情况输入)\x0d\service>
在使用tomcat中,经常碰到默认的8080端口被占用,有时想查下究竟是那个程序在占用着这个端口;这是可以到网站找个软件什么的,或则使用防火墙来查看使用的端口;其实没有这个必要,在windows中有个dos命令可以查看当前端口使用情况的, 这个命令就是netstat,这个命令带有很多参数可用,可以通过 -help参数来查看,比如:要查看所有的连接和监听端口,可以加上-a参数,要显示每个连接所属的进程id,可以加上-o参数;查到了进程id后,你可以在windows的进程管理器中找到对应pid的进程,默认情况下windows的进程管理器是不显示pid的,你可以通过在[查看]->[选择列]中选种 查看pid,然后进程查看器中就会显示pid了
netstat的全部参数及说明如下:
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 显示所有连接和监听端口。
-b 显示包含于创建每个连接或监听端口的
可执行组件。在某些情况下已知可执行组件
拥有多个独立组件,并且在这些情况下
包含于创建连接或监听端口的组件序列
被显示。这种情况下,可执行组件名
在底部的 [] 中,顶部是其调用的组件,
等等,直到 TCP/IP 部分。注意此选项
可能需要很长时间,如果没有足够权限
可能失败。
-e 显示以太网统计信息。此选项可以与 -s
选项组合使用。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是
下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议
之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 显示路由表。
-s 显示按协议统计信息。默认地,显示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项用于指定默认情况的子集。
-v 与 -b 选项一起使用时将显示包含于
为所有可执行组件创建连接或监听端口的
组件。
interval 重新显示选定统计信息,每次显示之间
暂停时间间隔(以秒计)。按 CTRL+C 停止重新
显示统计信息。如果省略,netstat 显示当前
配置信息(只显示一次)
前言
如何确定端口是否在Linux或类unix系统下占用怎么检查哪些端口正在Linux服务器上被占用Linux系统如何使用命令行检查端口是否已经在占用
查询哪些端口正在服务器的网络接口上被占用是非常重要的工作。您需要查询打开端口以检测入侵。除了入侵之外,出于故障排除的目的,可能有必要检查服务器上的其他应用程序是否已经使用了某个端口。例如,您可以在同一系统上安装Apache和Nginx服务器。因此,有必要了解Apache或Nginx是否使用TCP端口80或443。本教程提供了使用netstat、nmap和lsof命令查询正在使用的端口并查看正在使用该端口的应用程序的步骤。
如何查询端口是否在使用中:
检查Linux上被占用的端口和应用程序:
Step1: 打开终端
Step2: 执行以下任意一条命令查看被占用的端口
查看端口22是否被占用:
较新版本的Linux使用以下查询命令:
方法1: 使用lsof命令查询占用端口
先安装lsof命令
RHEL/CentOS系统:
Debian/Ubuntu系统安装lsof命令
使用语法如下
OpenBSD
看到类似这样的输出结果:
sshd是进程名字
TCP 22表示sshd进程占用了TCP 22端口,正在监听中(LISTEN)
1243表示sshd进程号
方法二:使用netstat查询被占用的端口号
较新的Linux发行版已经不再默认集成netstat命令,而是使用新命令ss取代了。
如果要使用netstat命令,需要手动安装net-tools套件:
RHEL/CentOS系统安装net-tools套件,执行以下命令:
Debian/Ubuntu系统执行以下命令:
您可以使用netstat查询被占用的端口和应用程序,如下所示。
执行以下命令查询:
在Linux上,netstat命令已经废弃了一段时间。因此,你需要使用ss命令如下:
或者:
其中ss命令选项如下:
-t : 只显示Linux上的TCP套接字
-u : 在Linux上只显示UDP套接字
-l : 监听套接字。例如,TCP端口22由SSHD服务器打开。
-p : 列出打开套接字的进程名
-n : 不要解析服务名称,即不要使用DNS
FreeBSD/MacOS X netstat 语法
FreeBSD/MacOS X查询被占用的端口
或者
OpenBSD netstat 语法
OpenBSD查询被占用的端口
或者
方法三:使用`nmap`命令查询Linux被占用的端口
默认情况下,Linux发行版并没有默认安装nmap命令,
CentOS系统安装nmap
Ubuntu系统安装nmap
使用nmap查询本机被占用的端口
查询Linux系统被占用的UDP端口
查询Linux系统被占用的TCP端口
你可以同时查询被占用的TCP和UDP端口
结论:
本教程解释了如何在Linux系统上使用命令行查询TCP或者UDP端口是否被占用。有关更多信息,请参见nmap命令和lsof命令页面
在网络程序的调试过程中,经常发生一些出乎意料的事情,比如创建一个TCP服务失败,这时候往往需要查看系统的网络情况,最常用的网络抓包当然非WireShark模式。但往往很多时候只需要查看某个端口的使用情况,它到底被那个进程(对应PID)占用了,或者你还需要把它Kill掉。如果你在Windows *** 作系统,你可以使用netstat命令来查询PID,然后可以打开任务管理器,查看这个PID对应的进程名;如果PID没有显示,菜单》查看》选择列》选中PID即可;得知进程后,我们可以将进程杀掉。下面我简单描述一下我所了解的在Windows和Linux系统下处理方式。 (假如我们需要确定谁占用了我们的9010端口)1、Windows平台在windows控制台窗口下执行:netstat -nao | findstr 9010TCP 127001:9010 0000:0 LISTENING 3017你看到是PID为3017的进程占用了9010端口,如果进一步你想知道它的进程名称,你可以使用如下命令:tasklist | findstr 3017如果你想杀死这个进程,你当然可以用前面描述的那种方法,在任务管理器里把它KILL了,但如果你喜欢高效一点,那么用taskkill命令就可以了。taskkill /pid 3017那么这个进程就灰灰湮灭了:)2、Linux如果你是个Linux爱好者,那个这个命令你应该很熟了,netstat -pan | grep 9010如果你稍微仔细一点,你会发现,用的都是netsta命令,事实上,netstat是一个比较通用的网络统计命令,几乎适用于所有现在流行的 *** 作系统,无论是Linux,Window,还是其他Unix,或者Unix-like *** 作系统,而且用法基本一致。下面是一个对Windows系统中netstat命令行参数的详细解释。格式:netstat [-a] [-e] [-n] [-o] [-p Protocol] [-b] [-r] [-s] [-v] [Interval]参数说明:-a 显示所有连接和监听端口。-n 以数字形式显示地址和端口号。-o 显示与每个连接相关的所属进程 ID。-p 在Windows系统中,该选项用于指定默认情况的子集。proto 显示 proto 指定的协议的连接;proto 可以是下列协议之一: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。-b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件拥有多个独立组件,并且在这些情况下; 包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名在底部的 [] 中,顶部是其调用的组件,等等,直到 TCP/IP 部分。注意此选项可能需要很长时间,如果没有足够权限可能失败。-e 显示以太网统计信息。此选项可以与 -s选项组合使用。-s 显示按协议统计信息。默认地,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息。-r 显示路由表。-v 与 -b 选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。interval 重新显示选定统计信息,每次显示之间暂停时间间隔(以秒计)。按 CTRL+C 停止重新显示统计信息。如果省略,netstat 显示当前配置信息(只显示一次)。
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用
假如我们需要确定谁占用了我们的9050端口
1、Windows平台
在windows命令行窗口下执行:
1查看所有的端口占用情况
C:\>netstat -ano
协议 本地地址 外部地址 状态 PID
TCP 127001:1434 0000:0 LISTENING 3236
TCP 127001:5679 0000:0 LISTENING 4168
TCP 127001:7438 0000:0 LISTENING 4168
TCP 127001:8015 0000:0 LISTENING 1456
TCP 1921683230:139 0000:0 LISTENING 4
TCP 1921683230:1957 22018131225:443 ESTABLISHED 3068
TCP 1921683230:2020 1836296189:1522 ESTABLISHED 1456
TCP 1921683230:2927 117799118:80 ESTABLISHED 4732
TCP 1921683230:2929 117799118:80 ESTABLISHED 4732
TCP 1921683230:2930 117799118:80 ESTABLISHED 4732
TCP 1921683230:2931 117799118:80 ESTABLISHED 4732
2查看指定端口的占用情况
C:\>netstat -aon|findstr "9050"
协议 本地地址 外部地址 状态 PID
TCP 127001:9050 0000:0 LISTENING 2016
P: 看到了吗,端口被进程号为2016的进程占用,继续执行下面命令: (也可以去任务管理器中查看pid对应的进程)
3查看PID对应的进程
C:\>tasklist|findstr "2016"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================
torexe 2016 Console 0 16,064 K
P:很清楚吧,tor占用了你的端口。
4结束该进程
C:\>taskkill /f /t /im torexe
不过对于dos不太懂的朋友,完全可以使用软件,更方便的视图。下面为大家推荐几款软件。
1、用TCPView,
2、使用CurrPorts
CurrPorts是一款查看本地端口详细信息的免费软件,他除了列出了所有TCP/IP和UDP的程序连接,还有进程ID、端口号,本地地址等等,并且如果有冲突的端口,CurrPort还允许用户结束端口进程,他还可以将进程信息保存为网页列表形式或者文本形式,方便以后的查看和分析,且还支持自动将进程变化情况写入到日志当中,方便日后的分析及查看。
1
开始----》运行----》cmd,调出命令窗口。
2
输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是49153,首先找到它。
3
查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49153",回车,记下最后一位数字,即PID,这里是1008。
4
继续输入tasklist|findstr "1008",回车,查看是哪个进程或者程序占用了1008端口,结果是:svchostexe。
5
或者是我们打开任务管理器也能根据PID找到进程。打开任务管理器切换到进程选项卡,默认是没有打开PID列的,如果看不到PID这一列,如下图,将PID(进程标示符)前面的勾打上,点击确定。
6
我们看到确定后能看到PID列了,如下图。
7
我们看一下1008对应的进程是谁,如果没有,我们把下面的显示所有用户的进程前面的勾打上,就可以看到了,映像名称是svchostexe,描述是,Windows的主进程,与上面命令查看的完全一致。
8
如果确定这个进程不用之后,我们右键就可以在进程管理器上关闭掉。由于这个进程是系统进程我们就不能关闭了,如果电脑上打开了应用程序占用了其他端口,确定没用使用的话就可以用上述方法进行查找并关闭。
END
以上就是关于linux查看端口占用的方法全部的内容,包括:linux查看端口占用的方法、CentOS如何查看端口是被哪个应用/进程占用、怎样查看8080端口被什么程序占用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)