软件测试工程师常用 Linux 命令
软件测试工程师在日常工作中,经常需要在 Linux 环境下部署测试环境、查看日志、定位问题、管理进程和文件等。以下是最常用且实用的 Linux 命令汇总。
一、文件与目录操作
| 命令 | 说明 | 示例 |
|---|---|---|
ls |
列出目录内容 | ls -l 以详细列表形式显示文件 ls -a 显示隐藏文件 |
cd |
切换目录 | cd /var/log 进入日志目录 cd .. 返回上级目录 |
pwd |
显示当前工作目录的绝对路径 | pwd |
mkdir |
创建目录 | mkdir test_dir mkdir -p a/b/c 递归创建多级目录 |
rmdir |
删除空目录 | rmdir empty_dir |
rm |
删除文件或目录 | rm file.txt rm -rf dir/ 强制递归删除 |
cp |
复制文件或目录 | cp src.txt dst.txt cp -r src_dir/ dst_dir/ |
mv |
移动或重命名文件/目录 | mv old.txt new.txt mv file.txt /tmp/ |
touch |
创建空文件或更新文件时间戳 | touch newfile.log |
cat |
查看完整文件内容 | cat app.log |
head |
查看文件开头部分(默认前10行) | head -20 app.log |
tail |
查看文件末尾部分 | tail -f app.log 实时跟踪日志 tail -100 app.log |
less / more |
分页查看大文件 | less large.log(按 q 退出) |
二、文本处理与过滤
| 命令 | 说明 | 示例 |
|---|---|---|
grep |
按模式搜索文本 | grep "ERROR" app.log grep -i "timeout" *.log 忽略大小写 grep -r "TODO" ./src/ 递归搜索目录 |
awk |
文本处理工具(按列/格式) | awk '{print $1}' access.log 打印第一列 awk '/404/ {print $0}' access.log |
sed |
流编辑器(替换/删除) | sed 's/old/new/g' file.txt 替换全部 sed -i 's/old/new/g' file.txt 直接修改文件 |
sort |
排序 | sort access.log sort -nrk 2 按第二列数字倒序 |
uniq |
去重(通常先排序) | `sort list.txt |
wc |
统计行数、单词数、字符数 | wc -l file.log 统计行数 `ps -ef |
cut |
按列截取文本 | cut -d',' -f1,3 data.csv 以逗号为分隔符取第1、3列 |
三、进程与系统资源
| 命令 | 说明 | 示例 |
|---|---|---|
ps |
查看进程状态 | ps -ef 显示所有进程 `ps aux |
top / htop |
动态查看系统资源与进程 | top 按 P 按CPU排序,M 按内存排序 htop(需安装)更友好 |
kill |
终止进程 | kill -9 PID 强制杀死 kill -15 PID 优雅终止 |
pkill / killall |
按名称杀进程 | pkill java killall chrome |
free |
查看内存使用 | free -h 人类可读格式 |
df |
查看磁盘分区使用 | df -h |
du |
查看目录/文件大小 | du -sh * 显示当前目录下各项目大小 du -h --max-depth=1 |
netstat |
网络连接、端口、路由等 | netstat -tulnp 查看监听端口与对应进程 `netstat -an |
ss |
更快的 socket 统计工具(替代 netstat) | ss -tulnp |
lsof |
列出打开的文件和端口 | lsof -i :8080 查看占用8080端口的进程 lsof -p PID |
四、网络相关
| 命令 | 说明 | 示例 |
|---|---|---|
ping |
测试网络连通性 | ping -c 4 google.com |
curl |
发送 HTTP 请求(测试接口) | curl -I https://example.com 查看响应头 curl -X POST -d "key=value" http://api/endpoint |
wget |
下载文件 | wget https://example.com/file.zip |
telnet |
测试端口是否开放 | telnet 192.168.1.1 22 |
ssh |
远程登录 | ssh user@hostname |
scp |
远程复制文件 | scp local.txt user@remote:/path/ scp -r dir/ user@remote:/path/ |
ifconfig / ip |
查看网络接口配置 | ip addr show ifconfig eth0 |
nslookup / dig |
DNS 查询 | nslookup www.baidu.com dig +short google.com |
五、权限管理
| 命令 | 说明 | 示例 |
|---|---|---|
chmod |
修改文件权限 | chmod 755 script.sh chmod +x run.sh 添加执行权限 |
chown |
修改文件所有者/所属组 | chown user:group file.txt chown -R user:group dir/ |
umask |
设置默认权限掩码 | umask 022 |
六、压缩与打包
| 命令 | 说明 | 示例 |
|---|---|---|
tar |
打包/解包 tar 文件 | tar -czvf archive.tar.gz dir/ 创建 gzip 压缩包 tar -xzvf archive.tar.gz 解压 |
gzip / gunzip |
压缩/解压 .gz 文件 | gzip large.log gunzip large.log.gz |
zip / unzip |
处理 zip 格式 | zip -r archive.zip dir/ unzip archive.zip |
七、查找与定位
| 命令 | 说明 | 示例 |
|---|---|---|
find |
按条件查找文件 | find /var/log -name "*.log" -mtime -1 最近1天修改的日志 find . -type f -size +100M 查找大于100M的文件 |
which |
查看命令的路径 | which java |
whereis |
搜索二进制、源码、帮助页 | whereis nginx |
locate |
基于数据库快速查找(需 updatedb) | locate application.properties |
八、环境与变量
| 命令 | 说明 | 示例 |
|---|---|---|
env |
显示所有环境变量 | env |
export |
设置或导出环境变量 | export JAVA_HOME=/usr/lib/jvm/java-11 |
echo |
打印变量或字符串 | echo $PATH |
source |
在当前 shell 中执行脚本(刷新配置) | source ~/.bashrc |
九、其他实用命令
| 命令 | 说明 | 示例 |
|---|---|---|
history |
查看命令历史 | history 20 !123 执行第123条命令 |
alias |
定义命令别名 | alias ll='ls -alF' |
date |
显示或设置系统时间 | date +"%Y-%m-%d %H:%M:%S" |
uptime |
查看系统运行时间与负载 | uptime |
man |
查看命令帮助手册 | man grep |
watch |
定期执行命令并全屏显示结果 | `watch -n 1 'netstat -an |
十、典型测试场景命令组合
| 场景 | 命令示例 |
|---|---|
| 实时跟踪错误日志 | `tail -f app.log |
| 查看某端口是否被占用 | `netstat -tulnp |
| 统计日志中某个接口的请求次数 | `grep "GET /api/user" access.log |
| 找出占用 CPU 最高的前5个进程 | `ps aux --sort=-%cpu |
| 向测试服务器上传文件 | scp testdata.json user@server:/tmp/ |
| 远程执行测试脚本 | ssh user@server "bash /path/to/test.sh" |
| 监控磁盘空间并及时清理 | df -h → du -sh /var/log/* → rm -rf /var/log/old/* |
掌握以上命令能够显著提升软件测试工程师在 Linux 环境下的工作效率,无论是环境搭建、日志分析还是问题定位都会得心应手。