1. 文件操作类天天用# 查看文件cat log.txt # 看全部内容文件小的时候用less log.txt # 翻页查看文件大时用按q退出tail -f log.txt # 实时跟踪日志最常用看报错head -20 log.txt # 看前20行# 编辑文件三种都要会vi config.yaml # 进vi编辑器按 i 编辑ESC :wq 保存退出vim config.yaml # vi的增强版nano settings.py # 更简单的编辑器# 查找文件find . -name test*.py # 找所有test开头的py文件grep ERROR log.txt # 在文件中搜索关键词grep -r pytest . # 在当前目录所有文件里递归搜索目录操作类基础但必会pwd # 当前在哪个目录ls -la # 查看所有文件包括隐藏的cd /home/project # 切换目录mkdir -p a/b/c # 创建多级目录cp -r test/ backup/ # 复制整个文件夹rm -rf temp/ # 删除文件夹小心使用3. 权限和用户面试常问chmod x run.sh # 给脚本添加执行权限chmod 755 script.py # rwxr-xr-x数字权限chown user:group file # 修改文件所有者# 权限说明必会# 755: 文件所有者可读写执行其他人只读执行# 644: 文件所有者可读写其他人只读4. 进程管理排查问题用bashps -ef | grep python # 查看python进程 ps aux | grep java # 查看java进程 kill -9 12345 # 强制杀掉进程PID12345 top # 看系统资源占用按q退出 htop # top的增强版更友好5. 网络相关接口测试、部署用bash# 看端口被谁占了面试最爱问 netstat -tlnp | grep 8080 # 查看8080端口占用 lsof -i :8080 # 同上更直观 # 测试网络连通性 curl http://localhost:8080/api # 发HTTP请求模拟接口调用 ping baidu.com # 测试网络通不通 telnet 127.0.0.1 3306 # 测试端口能否连上6. 日志查看排查问题核心技能bash# 实时跟踪日志 tail -f /var/log/app.log # 关键词搜索找报错 grep ERROR app.log grep -A5 -B5 NullPointer app.log # 显示错误前后5行 # 统计出现次数 grep Exception app.log | wc -l # 数数报错了多少次 # 动态过滤只显示包含ERROR的行 tail -f app.log | grep ERRORQ1如何查看某个端口是否被占用bash# 三种方式都可以 netstat -tlnp | grep 8080 lsof -i :8080 ss -tlnp | grep 8080Q2如何实时查看日志并过滤关键词bashtail -f application.log | grep ERRORQ3如何批量替换文件中的内容bash# 把当前目录所有py文件里的old_text换成new_text sed -i s/old_text/new_text/g *.py # 递归替换 find . -name *.py -exec sed -i s/old/new/g {} \;Q4如何查看系统负载bashtop # 看CPU、内存 free -h # 看内存使用 df -h # 看磁盘空间 uptime # 看系统负载Q5如何查找大文件bashfind / -type f -size 100M # 找大于100M的文件 du -sh * # 查看当前目录各文件夹大小三、Jenkins/CI/CD 场景实战结合你刚学的Pipeline这些命令最常用场景1部署前检查bash# Jenkins里常写的shell步骤 sh # 检查环境 python --version pip --version # 检查端口是否被占 if netstat -tlnp | grep 8080; then echo 端口8080已被占用 exit 1 fi # 启动服务 nohup python app.py app.log 21 # 等待启动并检查 sleep 5 curl -f http://localhost:8080/health || exit 1 场景2日志排查bash# 看测试失败原因 cd /var/jenkins/workspace/project tail -100 pytest.log | grep FAILED -A5 # 统计测试结果 grep -c PASSED pytest.log grep -c FAILED pytest.log场景3定时清理bash# 清理7天前的日志 find /var/log -name *.log -mtime 7 -delete # 清理旧构建 find /var/lib/jenkins/jobs -name builds -type d -mtime 30 -exec rm -rf {} \;四、面试官可能问的连环炮Q线上服务挂了你怎么排查bash# 1. 看服务还在不在 ps -ef | grep 服务名 # 2. 看日志 tail -200 /var/log/app.log # 3. 看端口 netstat -tlnp | grep 端口 # 4. 看资源 free -m df -h # 5. 尝试重启 ./restart.sh tail -f app.logQ有个日志文件很大几个G你怎么查问题bash# 不能用cat用less或tail less huge.log # 翻页查看不加载全部 tail -1000 huge.log # 只看最后1000行 # 用grep查找关键错误 grep -n ERROR huge.log | head -20 # 只看前20个错误 # 按时间范围截取 sed -n /2024-01-01 10:00/,/2024-01-01 11:00/p huge.log error.log