在Linux系统中,测试工作通常涉及系统性能、网络连通性、软件功能验证等多个方面,熟练掌握常用命令能大幅提升测试效率,以下从系统资源监控、网络测试、文件系统检查、进程管理、日志分析及软件测试辅助六个维度,详细介绍Linux测试中常用的命令及其应用场景。

系统资源监控命令
系统资源监控是性能测试的基础,通过实时查看CPU、内存、磁盘I/O等使用情况,可快速定位性能瓶颈。
-
top:动态展示系统进程资源占用,默认按CPU使用率排序,常用参数包括
-d(刷新间隔,如-d 5每5秒刷新)、-p(指定进程ID,如-p 1234),测试中可通过top -b -n 1以批处理模式输出单次结果,便于脚本分析。 -
htop:
top的增强版,支持彩色显示、进程树形视图及鼠标操作,更直观,安装后直接运行,按F6可按内存、CPU等指标排序。 -
vmstat:报告虚拟内存统计,包括进程数、内存使用、swap分区及块I/O操作,例如
vmstat 3 5表示每3秒刷新一次,共输出5次,重点关注si(swap入)和so(swap出)值,若持续大于0则可能内存不足。
(图片来源网络,侵删) -
iostat:监控磁盘I/O性能,需安装
sysstat包,命令iostat -x 2可显示详细磁盘指标,如%util(磁盘利用率)、await(平均等待时间),若%util接近100%且await较高,说明磁盘可能成为瓶颈。 -
free:查看内存使用情况,
-h参数以人类可读格式显示(如GB),-m以MB为单位,关注buff/cache和available列,避免系统因内存不足触发OOM(Out of Memory)。
网络测试命令
网络连通性和性能测试是测试中的高频需求,常用命令如下:
-
ping:测试网络连通性,
ping -c 4 baidu.com发送4个包,统计丢包率和延迟,若丢包率高或延迟波动大,需排查网络链路。
(图片来源网络,侵删) -
netstat:查看网络连接状态,
netstat -tuln显示所有监听端口(-tTCP、-uUDP、-l监听、-n不解析域名),测试中可通过netstat -an | grep ESTABLISHED查看活跃连接数。 -
ss:
netstat的替代工具,速度更快,ss -tuln功能与netstat -tuln一致,支持更多过滤条件,如ss -state ESTABLISHED仅显示已连接的套接字。 -
traceroute:追踪数据包路径,
traceroute -n baidu.com以数字形式显示IP跳数,可定位网络延迟或丢包节点。 -
iperf3:网络性能测试工具,需安装,服务端运行
iperf3 -s,客户端运行iperf3 -c <服务端IP> -t 10测试10秒带宽,关注bandwidth(带宽)和jitter(抖动)。
文件系统检查命令
文件系统测试涉及权限、空间占用、文件完整性等,常用命令包括:
-
df:查看磁盘空间使用,
df -h以人类可读格式显示各分区使用情况,若某个分区使用率超过90%,需及时清理。 -
du:统计目录或文件大小,
du -sh /var/log显示/var/log总大小(-s汇总、-h人性化),du -ah --max-depth=1可查看目录下一级文件大小分布。 -
lsblk:列出块设备信息,
lsblk -f显示文件系统类型,测试中可检查磁盘分区是否正确挂载。 -
dd:用于磁盘读写性能测试,
dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct以1GB块大小直接写入文件,通过time命令可计算写入速度。
进程管理命令
测试中常需查看或终止进程,常用命令如下:
-
ps:查看当前进程,
ps -ef显示所有进程详细信息,ps aux包含CPU/内存占用,通过grep过滤特定进程,如ps aux | nginx。 -
kill:终止进程,
kill -9 <PID>强制终止(-9为SIGKILL信号),测试中若进程卡死可使用。 -
pgrep:按名称查找进程ID,
pgrep -f "nginx"返回所有包含"nginx"的进程ID,便于批量操作。
日志分析命令
日志是定位问题的关键,常用命令包括:
-
tail:实时查看日志末尾,
tail -f /var/log/nginx/access.log持续跟踪新日志,测试中可实时监控请求情况。 -
grep:过滤日志内容,
grep "error" /var/log/app.log查找包含"error"的行,-i忽略大小写,-A 3 -B 3显示匹配行前后3行上下文。 -
awk:按列处理日志,
awk '{print $1, $9}' /var/log/access.log打印每行的第1和第9列(如IP和状态码),awk '{sum+=$10} END {print sum}'统计总流量(第10列为字节数)。
软件测试辅助命令
-
curl:测试HTTP接口,
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api发送POST请求,-i显示响应头,-v显示详细通信过程。 -
wget:下载文件或测试网页可访问性,
wget -O output.html http://example.com将页面保存为output.html,--spider模式仅检查不下载,如wget --spider http://example.com。 -
strace:跟踪系统调用,
strace -p <PID>监控进程的系统调用,测试中可用于定位程序卡死的原因(如等待锁或网络I/O)。
相关问答FAQs
Q1: 如何快速定位某个进程占用CPU过高的问题?
A1: 可通过以下步骤定位:
- 使用
top -H -p <PID>查看该进程的所有线程(-H显示线程),找到CPU占用最高的线程ID(TID); - 使用
printf "%x\n" <TID>将线程ID转为十六进制; - 运行
strace -p <TID> -c统计该线程的系统调用,或perf top -p <PID>查看性能热点,定位具体代码逻辑。
Q2: 测试中发现服务器丢包严重,如何排查?
A2: 可按以下步骤排查:
- 使用
ping -c 100 <目标IP>统计丢包率,若丢包率高,检查本地网络配置(ip a查看IP、netstat -i查看网卡错误包); - 运行
traceroute -n <目标IP>查看数据包经过的节点,定位丢包节点; - 若丢包发生在特定时段,检查服务器负载(
top、vmstat),若CPU/内存过高可能导致网络包处理延迟; - 检查防火墙规则(
iptables -L)或安全组配置,误拦截可能导致丢包。
