菜鸟科技网

Linux测试必用命令有哪些?

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

Linux测试必用命令有哪些?-图1
(图片来源网络,侵删)

系统资源监控命令

系统资源监控是性能测试的基础,通过实时查看CPU、内存、磁盘I/O等使用情况,可快速定位性能瓶颈。

  1. top:动态展示系统进程资源占用,默认按CPU使用率排序,常用参数包括-d(刷新间隔,如-d 5每5秒刷新)、-p(指定进程ID,如-p 1234),测试中可通过top -b -n 1以批处理模式输出单次结果,便于脚本分析。

  2. htoptop的增强版,支持彩色显示、进程树形视图及鼠标操作,更直观,安装后直接运行,按F6可按内存、CPU等指标排序。

  3. vmstat:报告虚拟内存统计,包括进程数、内存使用、swap分区及块I/O操作,例如vmstat 3 5表示每3秒刷新一次,共输出5次,重点关注si(swap入)和so(swap出)值,若持续大于0则可能内存不足。

    Linux测试必用命令有哪些?-图2
    (图片来源网络,侵删)
  4. iostat:监控磁盘I/O性能,需安装sysstat包,命令iostat -x 2可显示详细磁盘指标,如%util(磁盘利用率)、await(平均等待时间),若%util接近100%且await较高,说明磁盘可能成为瓶颈。

  5. free:查看内存使用情况,-h参数以人类可读格式显示(如GB),-m以MB为单位,关注buff/cacheavailable列,避免系统因内存不足触发OOM(Out of Memory)。

网络测试命令

网络连通性和性能测试是测试中的高频需求,常用命令如下:

  1. ping:测试网络连通性,ping -c 4 baidu.com发送4个包,统计丢包率和延迟,若丢包率高或延迟波动大,需排查网络链路。

    Linux测试必用命令有哪些?-图3
    (图片来源网络,侵删)
  2. netstat:查看网络连接状态,netstat -tuln显示所有监听端口(-tTCP、-uUDP、-l监听、-n不解析域名),测试中可通过netstat -an | grep ESTABLISHED查看活跃连接数。

  3. ssnetstat的替代工具,速度更快,ss -tuln功能与netstat -tuln一致,支持更多过滤条件,如ss -state ESTABLISHED仅显示已连接的套接字。

  4. traceroute:追踪数据包路径,traceroute -n baidu.com以数字形式显示IP跳数,可定位网络延迟或丢包节点。

  5. iperf3:网络性能测试工具,需安装,服务端运行iperf3 -s,客户端运行iperf3 -c <服务端IP> -t 10测试10秒带宽,关注bandwidth(带宽)和jitter(抖动)。

文件系统检查命令

文件系统测试涉及权限、空间占用、文件完整性等,常用命令包括:

  1. df:查看磁盘空间使用,df -h以人类可读格式显示各分区使用情况,若某个分区使用率超过90%,需及时清理。

  2. du:统计目录或文件大小,du -sh /var/log显示/var/log总大小(-s汇总、-h人性化),du -ah --max-depth=1可查看目录下一级文件大小分布。

  3. lsblk:列出块设备信息,lsblk -f显示文件系统类型,测试中可检查磁盘分区是否正确挂载。

  4. dd:用于磁盘读写性能测试,dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct以1GB块大小直接写入文件,通过time命令可计算写入速度。

进程管理命令

测试中常需查看或终止进程,常用命令如下:

  1. ps:查看当前进程,ps -ef显示所有进程详细信息,ps aux包含CPU/内存占用,通过grep过滤特定进程,如ps aux | nginx

  2. kill:终止进程,kill -9 <PID>强制终止(-9为SIGKILL信号),测试中若进程卡死可使用。

  3. pgrep:按名称查找进程ID,pgrep -f "nginx"返回所有包含"nginx"的进程ID,便于批量操作。

日志分析命令

日志是定位问题的关键,常用命令包括:

  1. tail:实时查看日志末尾,tail -f /var/log/nginx/access.log持续跟踪新日志,测试中可实时监控请求情况。

  2. grep:过滤日志内容,grep "error" /var/log/app.log查找包含"error"的行,-i忽略大小写,-A 3 -B 3显示匹配行前后3行上下文。

  3. awk:按列处理日志,awk '{print $1, $9}' /var/log/access.log打印每行的第1和第9列(如IP和状态码),awk '{sum+=$10} END {print sum}'统计总流量(第10列为字节数)。

软件测试辅助命令

  1. curl:测试HTTP接口,curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api发送POST请求,-i显示响应头,-v显示详细通信过程。

  2. wget:下载文件或测试网页可访问性,wget -O output.html http://example.com将页面保存为output.html--spider模式仅检查不下载,如wget --spider http://example.com

  3. strace:跟踪系统调用,strace -p <PID>监控进程的系统调用,测试中可用于定位程序卡死的原因(如等待锁或网络I/O)。

相关问答FAQs

Q1: 如何快速定位某个进程占用CPU过高的问题?
A1: 可通过以下步骤定位:

  1. 使用top -H -p <PID>查看该进程的所有线程(-H显示线程),找到CPU占用最高的线程ID(TID);
  2. 使用printf "%x\n" <TID>将线程ID转为十六进制;
  3. 运行strace -p <TID> -c统计该线程的系统调用,或perf top -p <PID>查看性能热点,定位具体代码逻辑。

Q2: 测试中发现服务器丢包严重,如何排查?
A2: 可按以下步骤排查:

  1. 使用ping -c 100 <目标IP>统计丢包率,若丢包率高,检查本地网络配置(ip a查看IP、netstat -i查看网卡错误包);
  2. 运行traceroute -n <目标IP>查看数据包经过的节点,定位丢包节点;
  3. 若丢包发生在特定时段,检查服务器负载(topvmstat),若CPU/内存过高可能导致网络包处理延迟;
  4. 检查防火墙规则(iptables -L)或安全组配置,误拦截可能导致丢包。
分享:
扫描分享到社交APP
上一篇
下一篇