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 下非常强大的网络抓包工具,能捕获并分析经过指定接口的数据包,适用于调试、排错、安全审计等场景。