Linux
1.netstat
netstat(Network Statistics)是一个用于查看网络状态的命令行工具,常用于排查服务器和本机的网络连接、监听端口、网络统计信息等问题。
常用选项总览(功能分类)
① 显示连接/监听状态
| 选项 | 含义 | 
|---|---|
-a | 
显示所有连接(Active)和监听端口(Listening) | 
-t | 
仅显示 TCP 连接 | 
-u | 
仅显示 UDP 连接 | 
-l | 
仅显示正在监听的端口 | 
-n | 
显示数字地址和端口(不解析名称) | 
-p | 
显示哪个进程(PID/程序)使用了该连接 | 
② 显示接口/统计信息
| 选项 | 含义 | 
|---|---|
-i | 
显示网络接口状态信息(收发统计) | 
-s | 
显示协议统计(TCP/UDP/ICMP 等) | 
-e | 
显示更详细的接口信息 | 
-c | 
每秒重复输出(持续查看状态) | 
③ 显示路由信息
| 选项 | 含义 | 
|---|---|
-r | 
显示路由表(相当于 route 或 ip route) | 
✅ 常用组合命令汇总
| 命令 | 用途说明 | 
|---|---|
netstat -an | 
显示所有连接(不解析名称) | 
netstat -tuln | 
显示所有监听中端口(TCP/UDP,数字形式) | 
sudo netstat -tulnp | 
显示监听端口和关联进程(需要 sudo) | 
netstat -s | 
显示协议统计(TCP/UDP/ICMP 的包数等) | 
netstat -i | 
显示各个网络接口的统计信息(接收/发送/丢包) | 
netstat -r | 
显示路由表 | 
netstat -c | 
实时刷新连接信息(每秒更新) | 
示例详解
查看所有 TCP 连接:
1  | netstat -tn  | 
查看当前监听端口和所属程序:
1  | sudo netstat -tulnp  | 
输出:
1  | tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1162/sshd  | 
2.ss
ss(Socket Statistics)用来查看当前系统中所有的 socket(套接字)连接、监听端口、使用进程 等,是网络调试排查的利器。比netstat更加现代,更好用。
常用命令示例
1.显示所有连接(TCP、UDP)
1  | ss -a  | 
2.显示所有监听的端口(TCP/UDP)
1  | ss -tuln  | 
-t:TCP-u:UDP-l:仅监听-n:不解析主机名/服务名(提升速度)
3.显示进程占用的端口(带 PID/程序名)
1  | sudo ss -tulnp  | 
1  | Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process  | 
4.查看某端口是否被监听(比如 1883)
1  | sudo ss -tulnp | grep :1883  | 
5.显示所有 UNIX 本地 socket(如 /run/php/php7.4-fpm.sock)
1  | ss -x  | 
3. head 和 tail
head 和 tail 是 Linux/Unix 中两个常用的命令行工具,分别用来查看文件的开头和结尾内容。常用于查看日志文件、文本文件的前几行或后几行。
head命令用法详解
作用:显示文件或标准输入的开头部分。
语法
1  | head [选项] [文件...]  | 
常用选项
| 选项 | 说明 | 示例 | 
|---|---|---|
-n <行数> | 
指定显示的行数,比如 -n 20 显示前20行 | 
head -n 20 filename | 
-c <字节数> | 
按字节数显示开头内容,比如前100字节 | head -c 100 filename | 
-q | 
静默模式,多个文件时不显示文件名 | head -q file1 file2 | 
-v | 
显示文件名,默认多个文件时会显示文件名 | head -v file1 file2 | 
--help | 
显示帮助信息 | head --help | 
示例
显示文件前10行(默认)
1
head filename
显示文件前20行
1
head -n 20 filename
显示文件前100字节
1
head -c 100 filename
查看多个文件前10行,不显示文件名
1
head -q file1 file2
tail命令用法详解
作用:显示文件或标准输入的结尾部分。
语法
1  | tail [选项] [文件...]  | 
常用选项
| 选项 | 说明 | 示例 | 
|---|---|---|
-n <行数> | 
指定显示的行数,比如 -n 20 显示最后20行 | 
tail -n 20 filename | 
-c <字节数> | 
按字节数显示结尾内容,比如最后100字节 | tail -c 100 filename | 
-f | 
实时跟踪文件增长,文件追加时显示最新内容 | tail -f filename | 
-F | 
类似 -f,但文件被移动或删除后也能继续跟踪(更健壮) | 
tail -F filename | 
--pid=<pid> | 
进程终止时停止跟踪 | tail --pid=1234 -f filename | 
-q | 
多文件时不显示文件名 | tail -q file1 file2 | 
-v | 
多文件时显示文件名 | tail -v file1 file2 | 
--help | 
显示帮助信息 | tail --help | 
示例
显示文件最后10行(默认)
1
tail filename
显示文件最后20行
1
tail -n 20 filename
显示文件最后100字节
1
tail -c 100 filename
实时跟踪日志文件
1
tail -f /var/log/syslog
使用
-F监控日志文件,日志轮转时仍能继续跟踪1
tail -F /var/log/syslog
跟踪多个文件最后10行,但不显示文件名
1
tail -q file1 file2
进阶技巧
结合
grep过滤1
tail -f /var/log/syslog | grep "error"
head和tail结合用法:显示文件中间部分,比如第20行到第40行1
head -n 40 filename | tail -n 21
4.tcpdump
tcpdump 是 Linux/UNIX 下非常强大的网络抓包工具,能捕获并分析经过指定接口的数据包,适用于调试、排错、安全审计等场景。
