netstat -tuln
、ss -tuln
、lsof -i
、nmap IP地址
以及查看/etc/services
文件。Linux系统中,查看端口号是网络管理和系统监控的重要任务之一,以下是几种常用的方法来查看Linux机器上的端口号:
netstat命令
netstat是一个经典的网络统计工具,可以显示网络连接、路由表、接口统计等信息,通过以下命令可以查看当前系统上所有正在监听的TCP和UDP端口:
netstat -tuln
- -t:显示TCP连接
- -u:显示UDP连接
- -l:仅显示监听状态的连接
- -n:以数字形式显示地址和端口号,不解析服务名称
示例输出:
Proto Recv-Q Net-Device Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0: LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:
ss命令
ss命令是netstat的替代品,功能更强大且更快速,它可以用来显示更多的网络信息,包括套接字统计信息,通过以下命令可以查看当前系统上所有正在监听的TCP和UDP端口:
ss -tuln
- -t:显示TCP连接
- -u:显示UDP连接
- -l:仅显示监听状态的连接
- -n:以数字形式显示地址和端口号,不解析服务名称
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :22 : LISTEN 0 128 :68 : LISTEN 0 128 127.0.0.1:631 :
lsof命令
lsof命令可以列出当前系统打开的文件和进程信息,包括网络连接和打开的端口,通过以下命令可以查看正在监听的端口和相应的进程:
lsof -i
- -i:显示所有网络连接和监听状态的端口号
如果只想查看特定端口的信息,可以使用:
lsof -i :端口号
查看80端口的信息:
lsof -i :80
示例输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 1234 root 3u IPv4 12345 0t0 TCP :80 (LISTEN)
nmap命令
nmap是一款网络扫描工具,可以用来探测目标主机的开放端口,通过以下命令可以扫描指定主机的端口号:
nmap 主机IP地址
扫描本地主机的端口:
nmap localhost
或者扫描特定IP地址的端口:
nmap 192.168.1.1
示例输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2025-07-21 10:00 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00011s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 22/tcp open ssh 80/tcp open http
systemctl命令(针对systemd系统)
如果你使用的是基于systemd的系统,可以通过systemctl命令查看特定服务的端口号,查看SSH服务的端口号:
systemctl status sshd
在输出中查找类似以下的行:
Active: active (running) since ...; 1min ago ... Main PID: 1234 (sshd) ...
然后使用journalctl命令查看日志文件中的详细信息:
journalctl | grep -i ssh
示例输出:
Aug 01 21:43:36 elk3 systemd[1]: Starting OpenSSH server daemon... Aug 01 21:43:36 elk3 sshd[860]: Server listening on 0.0.0.0 port 22. Aug 01 21:43:36 elk3 sshd[860]: Server listening on :: port 22. Aug 01 21:43:36 elk3 systemd[1]: Started OpenSSH server daemon.
/etc/services文件
在Linux系统中,端口号和服务之间有对应关系,可以通过查看/etc/services文件来了解常用服务的端口号,打开终端,输入以下命令:
cat /etc/services
该命令会列出/etc/services文件中定义的所有服务及其对应的端口号,HTTP服务默认使用80端口,SSH服务默认使用22端口。
归纳表格
命令 | 描述 | 常用选项 | 示例 |
---|---|---|---|
netstat |
显示网络连接、路由表、接口统计等 | -tuln |
netstat -tuln |
ss |
显示套接字统计信息 | -tuln |
ss -tuln |
lsof |
列出打开的文件和进程信息 | -i |
lsof -i |
nmap |
网络扫描工具,探测开放端口 | `nmap localhost` | |
systemctl |
查看特定服务的端口号(基于systemd) | `systemctl status sshd` | |
/etc/services |
查看端口号和服务之间的对应关系 | `cat /etc/services` |
FAQs
Q1: 如何查看特定端口是否被占用?
A1: 可以使用lsof
或netstat
命令结合端口号来查看,查看80端口是否被占用:
lsof -i :80
或者:
netstat -tuln | grep :80
如果有输出,则表示该端口已被占用;否则未被占用。
Q2: 如何查看某个进程正在使用的端口号?
A2: 可以使用lsof
或netstat
命令结合进程ID来查看,假设进程ID为1234,查看该进程正在使用的端口号:
lsof -p 1234 -i
或者:
netstat -tulnp | grep
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/72089.html