前言
日常工作中难免会接触 Linux 环境 —— 搭建测试环境、查看应用日志、排查端口占用、编写自动化脚本等,掌握 Linux 基础操作能大幅提升工作效率。本文实际需求出发,整理了最常用的 Linux 知识点,每个技能都附带实操命令和应用场景,新手也能快速上手!
一、 终端基础操作最常用命令
| | |
|---|
| pwd | |
| cd /opt/test | |
| ls -l | |
| mkdir -p /opt/test/logs | |
| cp /tmp/app.log /opt/test/logs(文件)
cp -r /tmp/test /opt/(目录) | |
| mv test.txt test_bak.txt(重命名)
mv /tmp/test /opt/(移动) | |
| rm -f test.txt(强制删除文件)、
rm -rf /opt/test(强制删除目录) | |
| cat app.log(全部内容)
head -10 app.log(前 10 行) | |
| tail -10f app.log(前 10 行)
tail -20 app.log(后 20 行)
tail -f app.log(实时监控全部内容) | |
# 可直接复制使用
# 1. 实时监控日志中的报错(测试时实时捕捉异常,i代表忽略大小写)
tail -f /var/log/app.log | grep -i "error"
# 2.实时监控报错日志并显示行号:
tail -f app.log | grep -in "error"
# 3. 查找 8080 端口占用并强制关闭:
lsof -i:8080 | grep -v "PID" | awk '{print $2}' | xargs kill -9
# 4. 4. 批量替换测试配置中的环境变量:
sed -i 's/DEV_URL/PROD_URL/g' test_config/*.conf
# 5. 统计测试接口报错次数:
grep "api/order" access.log | grep "500" | wc -l
# 6. 备份测试日志并清理原文件:
tar -zcvf logs_backup.tar.gz /opt/test/logs && rm -f /opt/test/logs/*.log
# 7. 远程连接测试服务器并执行命令:
ssh test@192.168.1.100 "cd /opt/test && ./run_test.sh"
二、 权限管理
| | |
|---|
| chmod [权限] [文件/目录] | 1. chmod 755 test_script.sh 脚本所有者可读写执行,其他人只读执行 2. chmod 644 app.conf 配置文件所有者可读写,其他人只读 > 3. chmod -R 777 test_data 临时开放测试数据目录全权限(调试用) |
| chmod [用户+/-权限] [文件] | 1. chmod u+x auto_run.sh 给所有者添加脚本执行权限 chmod o-r test_secret.txt移除其他用户的测试机密文件读权限 <br>3.chmod -R g+w logs` 给测试组添加日志目录写权限 |
| chown [用户:组] [文件/目录] | chown test:test_team /opt/test |
| chgrp -R [组] [目录] | chgrp -R test_team test_case |
Linux 文件权限用r(读)、w(写)、x(执行)-(无权限)表示,对应数字4、2、1、0,常见权限组合: Linux 权限数字是所有者(u)、组用户(g)、其他用户(o) 三者的权限总和,每一位对应一类用户:
(1)常用命令-数字修改权限方法示例:
777:所有者、组用户、所有其他用户都拥有可读、可写、可执行权限
755:只有所有者拥有可读、可写、可执行权限(rwx);组用户和其他用户仅拥有可读、可执行权限(无写入权限)(r-x),
644:所有者可读可写(rw-),组用户和其他用户只读(r--)
# 修改文件权限(给test.sh添加执行权限)
chmod 755 test.sh
# 修改目录权限(递归修改/opt/test下所有文件权限)
chmod -R 744 /opt/test
# 修改文件所有者(将app.log所有者改为test用户)
chown test:test app.log
(2)常用命令-字母修改权限方法示例:
# 1. 给测试脚本移除其他用户的执行权限(提升环境安全性)
chmod o-x test_auto.sh
# 2. 给测试配置文件设置「所有者可读可写,其他用户只读」(等价于644,更易理解)
chmod u=rw,go=r app_test.conf
# 3. 递归给测试日志目录添加「所属组可写」权限(方便团队共享日志)
chmod -R g+w /opt/test/logs
# 4. 移除测试数据文件的「其他用户读权限」(防止测试数据泄露)
chmod o-r test_data.csv
测试场景:自动化脚本执行失败时,先检查脚本是否有执行权限(ls -l 脚本名),若没有则用chmod +x 脚本名添加。
三、 创建、修改文件与目录管理
(1) 创建 / 删除 / 修改
| | |
|---|
touch [文件名] | | touch test_case_{001..010}.txt |
mkdir [目录名] | | mkdir -p test/{data,logs,scripts} 递归创建测试目录结构(数据 / 日志 / 脚本目录) |
rm [文件名] | | rm -f *.log |
rm -rf [目录名] | | rm -rf temp_test_data |
mv [源] [目标] | | mv app.log app_20260110.log 按日期备份测试日志;mv old_case new_case 重命名测试用例 |
cp [源] [目标] | | cp -r test_case /backup 备份测试用例目录;cp config.template config.conf 复制配置模板 |
(2)查看文件内容(日志排查)
| | | |
|---|
| cat [文件] | | cat app.conf |
| head -n [行数] [文件] | | head -20 app.log |
| tail -n [行数] [文件] | | tail -50 error.log |
| tail -f [文件] | | tail -f /opt/test/logs/auto_test.log |
| tail -F [文件] | | tail -F app.log |
| more [文件] | | more large_test_report.txt |
四、 进程与端口排查
测试中经常遇到 “应用启动失败”“端口被占用” 等问题,以下命令直接命中痛点:
| | |
|---|
ps aux | | |
| | |
top | | 查看测试应用的 CPU / 内存占用(按 P 排序 CPU,M 排序内存) |
lsof -i:[端口] | | lsof -i:8080 |
| | |
| | |
kill [PID] | | kill 1234 |
kill -9 [PID] | | kill -9 5678 |
pkill -f [进程名] | | pkill -f "test_script.py" |
(1)查看进程
测试场景:应用启动后,用ps -ef | grep 应用名确认进程是否正常运行。
# 查看所有进程(常用)
ps -ef
# 查找指定进程(如Java应用)
ps -ef | grep java
# 实时查看进程资源占用(按CPU排序)
top (按P键切换CPU排序,按M键切换内存排序)
(2)端口占用排查
测试场景:应用启动报错 “端口被占用”,用上述命令找到占用进程的 PID,然后用kill -9 PID强制关闭进程。
# 方法1:查看指定端口(如8080)占用情况(需安装lsof)
lsof -i:8080
# 方法2:查看端口占用(通用,无需安装)
netstat -anp | grep 8080
# 方法3:CentOS7+专用(查看端口与进程映射)
ss -tlnp | grep 8080
(3) 进程终止
# 正常终止进程(PID为进程号)
kill PID
# 强制终止进程(应用卡死时使用)
kill -9 PID
# 终止指定名称的所有进程(如终止所有Java进程)
pkill -f java
五、 日志分析(问题定位)
发现 bug 后,日志是定位问题的关键,以下是日志查看的高频命令:
| | |
|---|
grep [参数] [关键词] [文件] | | 1. grep -i "error" app.log 忽略大小写搜索报错(匹配 Error/ERROR/error) 2. grep -n "500" api.log 显示接口 500 错误的行号 3. grep -C 5 "timeout" test.log 显示超时错误前后 5 行上下文 |
| | |
sed 's/旧内容/新内容/g' [文件] | | sed 's/dev/prod/g' config.conf |
awk '{print $1,$4}' [文件] | | awk '{print $1,$4}' access.log |
sort [文件] | | sort test_result.txt |
wc -l [文件] | | wc -l error.log |
(1)基础日志操作
# 查看日志全部内容(适合小文件)
cat /var/log/app.log
# 查看日志前N行(如前50行,排查启动报错)
head -50 /var/log/app.log
# 查看日志后N行(如后100行,排查最新报错)
tail -100 /var/log/app.log
# 实时监控日志(测试时实时查看报错信息)
tail -f /var/log/app.log
(2)日志筛选与搜索(重点!)
# 搜索日志中包含“error”的行(区分大小写)
grep "error" /var/log/app.log
# 搜索日志中包含“Error”或“error”的行(不区分大小写)
grep -i "error" /var/log/app.log
# 搜索日志中包含“error”的行,并显示行号
grep -n "error" /var/log/app.log
# 搜索日志中包含“error”的行,同时显示前后5行上下文
grep -C 5 "error" /var/log/app.log
# 实时监控日志中的报错(测试时实时捕捉异常)
tail -f /var/log/app.log | grep -i "error"
测试场景:接口返回 500 错误时,用grep "500" 日志文件快速定位报错位置和原因。
(3)日志导出与保存
# 将包含“timeout”的日志行保存到文件
grep "timeout" /var/log/app.log > /tmp/timeout_error.txt
# 将日志后1000行追加到文件(不覆盖原有内容)
tail -1000 /var/log/app.log >> /tmp/app_log_bak.txt
六、 打包压缩与备份
| | | |
|---|
| tar -zcvf [压缩包名] [源文件/目录] | tar -zxvf [压缩包名] | tar -zcvf test_data_20260110.tar.gz /opt/test/data 备份测试数据;tar -zxvf test_data.tar.gz -C /tmp 解压到临时目录 |
| tar -jcvf [压缩包名] [源文件/目录] | tar -jxvf [压缩包名] | tar -jcvf test_report.tar.bz2 /opt/test/reports |
| zip -r [压缩包名] [源文件/目录] | unzip [压缩包名] | zip -r test_case.zip test_case/ 压缩测试用例;unzip test_case.zip -d /opt/test 解压到测试目录 |
七、 远程连接与文件传输
| | |
|---|
ping [IP/域名] | | ping 192.168.1.100 测试连接测试服务器;
ping www.test-api.com 测试接口域名可用性 |
ifconfig | | 查看本地 IP(如 192.168.1.5),用于远程连接 |
curl [URL] | | curl http://192.168.1.100:8080/api/health 测试接口健康状态;
curl -I http://test.com 查看响应头 |
telnet [IP] [端口] | | telnet 192.168.1.100 3306 |
ssh [用户]@[IP] -p [端口] | | ssh test@192.168.1.100 -p 2222 |
scp -r -P [端口] [源目录] [目标] | | scp -r -P 2222 test@192.168.1.100:/opt/test/reports ./backup |
# 测试服务器是否可达(如测试MySQL服务器连通性)
ping 192.168.1.100
# 测试端口是否开放(如测试8080端口是否可访问)
telnet 192.168.1.100 8080
# 测试HTTP接口是否正常(替代浏览器快速验证)
curl http://192.168.1.100:8080/api/test
八、 系统信息查询与软件安装卸载
(1) 系统信息查询
| | |
|---|
date | | 确认测试服务器时间是否同步(避免时间相关测试失败) |
cal | | cal 2026 |
df -h | | df -h |
du -sh [目录] | | du -sh /opt/test/logs |
free -m | | free -m |
(2)软件安装与卸载(Debian/Ubuntu)
| | |
|---|
sudo apt update | | |
sudo apt install [软件名] | | sudo apt install mysql-client 安装 MySQL 客户端(连接测试数据库);sudo apt install python3-pip 安装 Python 包管理工具 |
sudo apt remove [软件名] | | sudo apt remove unused-package |
sudo apt upgrade | | |
(3)软件安装与卸载(CentOS/RHEL)
| | |
|---|
sudo yum update | | |
sudo yum install [软件名] | | sudo yum install nginx |
sudo yum remove [软件名] | | sudo yum remove old-software |
(4)磁盘空间查看(避免日志占满磁盘)
测试场景:应用日志无法写入时,先检查磁盘是否满了(df -h),若满则清理无用日志。
# 查看各分区磁盘占用情况(-h人性化显示)
df -h
# 查看指定目录占用空间(-s汇总,-h人性化)
du -sh /var/log/
(5)包管理(安装测试依赖)
# 安装软件(如安装lsof、curl)
yum install -y lsof curl
# 更新软件
yum update -y
# 安装软件
apt-get install -y lsof curl
# 更新软件源
apt-get update
九、Shell 脚本基础(自动化测试入门)
测试中可以用 Shell 脚本实现重复操作(如环境清理、数据准备、日志分析),以下是入门必备语法:
(1).脚本基本结构
创建脚本文件test_script.sh,内容如下:
#!/bin/bash
# 注释:测试环境清理脚本
# 定义变量
LOG_DIR="/opt/test/logs"
BAK_DIR="/opt/test/log_bak"
# 创建备份目录(不存在则创建)
if [ ! -d $BAK_DIR ]; then
mkdir -p $BAK_DIR
fi
# 复制日志文件到备份目录
cp $LOG_DIR/*.log $BAK_DIR/
# 清空原日志文件(保留文件)
> $LOG_DIR/*.log
# 输出执行结果
echo "日志备份与清理完成!"
(2)脚本执行方法
# 给脚本添加执行权限
chmod +x test_script.sh
# 执行脚本
./test_script.sh
(3) 测试常用脚本片段
# 判断目录是否存在
if [ ! -d "/opt/test" ]; then
echo "目录不存在,创建目录..."
mkdir -p /opt/test
fi
# 判断文件是否存在
if [ -f "/opt/test/app.conf" ]; then
echo "配置文件存在,开始测试..."
else
echo "配置文件缺失,测试终止!"
exit 1
fi
(4)循环遍历文件:
# 遍历/test目录下所有.txt测试数据文件
for file in /test/*.txt; do
echo "正在处理测试文件:$file"
# 执行测试命令(如接口测试、数据导入等)
done
如果本文对你有帮助,欢迎点赞、收藏、转发~ 有任何 Linux 相关的问题,也可以在评论区交流!