6 Linux与Bash课程 - 软件测试

软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏。
本节内容:Linux与Bash课程进阶内容

1. Linux实战

大纲
常用软件 Linux 环境配置
比较常见的Linux使用场景

运维 主要做Linux服务端的运营


echo $PATH 查看可执行命令的路径
whereis Python 查看Python安装路径
echo $$ 查看当前通过bash启动的进程的id
echo $SHELL 查看shell类型
mac 的shell为 /bin/zsh
linux 的shell为 /bin/bash
UNIX 的shell为 /bin/sh


如果输入密码报错,将~/.ssh/下的known_hosts删除
rm -f ~/.ssh/known_hosts
w 命令可以暗处服务器上面有多少用户在登陆
w |grep xly3|awk '{print $1}'|sort|uniq |wc -l 查看登录服务器的用户中用户名包含xly3的用户的第一列内容,并进行排序去重,统计用户数量
使用 id查看当前登录的用户名
uname -a可以查看当前服务器使用的操作系统的信息


在这里插入图片描述

xargs将前面的命令拿过来在执行kill命令


1.1 Linux 与 Shell 教程

  • Linux 与Shell关系
  • 管道
  • 文件管理、文本处理、网络相关命令。
  • 文本排序、去重、统计。
  • Linux三剑客 grep、sed、awk
  • 性能相关命令。CPU,内存,硬盘,网络
  • Bash脚本,变量、条件判断,控制语句,参数传递
  • 网络请求curl
  • JSON数据解析jq

Linux

shell 种类

  • 常见shell:bash、sh、zsh
  • Window:git bash、cygwin
  • Mac:Terminal、iTerm2
  • 演练平台:shell.ceshiren.com、xly3890…

云服务器

  • 国内云服务商:
    • 阿里云、腾讯云、华为云
    • 推荐配置为2核4G服务器
  • 海外:
    • DigitalOccean、Linode
    • 最低价格每个月5$

推荐的Linux 与 Shell 环境

  • Linux:
    • CentOS:国内大部分的服务器都在使用,衍生自RedHat
    • Ubuntu:桌面系统、部分服务器系统在使用,基于Debian自由软件系统
  • Shell:Bash

1.2 环境配置

Shell 环境变量

  • export A=123 将变量导出到子进程 (在shell中直接使用bash进入子进程)
  • unset A 删除变量A

  • set 可以获得当前的所有变量
  • unset 可以释放变量
  • env 可以获得可以传递给子进程的变量
  • export aa=bbbb 把变量导出到子进程
     
  • 文件:~/.bash_profile ~/.bashrc, /etc/profile

环境变量常见问题

  • PATH变量在linux中更新后需要重启应用
  • 在Windows中更新PATH后如果不关闭所有的cmd进程也不会生效

开源镜像站

  • 华为:https://mirrors.huaweicloud.com/
  • 阿里云:https://developer.aliyun.com/mirror/
  • 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
  • 中国科学技术大学开源软件镜像:https://mirrors.ustc.edu.cn/

Python 安装与入门文档

切换多版本

  • vim ~/.bash_profile 修改环境变量
    • export PATH=$JAVA_HOME/bin:$PATH 添加环境变量
    • 将下载解压的 tar.gz 文件的路径配置到环境变量
  • echo $PATH -修改环境变量后重新加载环境变量
  • pyenv
    • https://github.com/pyenv
    • pyenv --version 查看pyenv版本
    • pyenv versions 查看安装的全部Python版本
    • pyenv install 3.7.1 安装指定的Python版本
    • source ~/.bash_profile 重新加载文件

  • PATH变量决定优先使用哪个Python
  • 把Python2与Python3安装到不同的目录,or pyenv 工具。

JAVA 安装

Node.js 安装

  • 使用./node --version 查看当前目录的 node 版本
  • node --version 查看系统环境的node版本
  • nvm 相当于pyenv,可以安装不同版本的node
    • nvm install 14.15.1 安装

文件描述符

在这里插入图片描述

当前在线用户

  • w
    • w | awk '{print $1}' | sed 1,2d | sort | uniq -c | wc -l
    • 查看当前用户的用户名(第一列),并删除第一二行的内容,然后排序,去重(-c 去重并统计出现的次数),统计用户数(行数)

提取本机ip

  • ifconfig -a |grep inet |grep -v 127.0.0.1 |grep -v inet6 |awk '{print $2}'
  • 查看当前电脑服务器的网卡信息,显示包含inet的行,过滤掉包含127.0.0.1的行(-v 过滤指定的关键字),过滤掉包含inet6的行,显示第二列(ip地址)
  • en0 -10开的一般为局域网
  • lo -回环地址
  • eth0 第一个网卡

一键搭运行Web服务

  • python -m http.server 8000 命令行输入
    • usage: server.py [-h] [–cgi] [–bind ADDRESS] [–directory DIRECTORY] [port]
    • python -m http.server 8000 --bind 0.0.0.0
    • 在需要访问文件的路径下执行命令
    • -m 导入模块http,里面的方法server
  • 启动上述命令,通过本机的ip地址加上端口可以访问数据
  • 127.0.0.1:8000 本机访问
  • IP地址:8000 (192.168.11.161:8000) 其他电脑访问

  • python2 -m CGIHTTPServer 8000
  • python3 -m http.server -cgi 8000

提取对外连接的ip

  • netstat -tnp
    • t 显示协议 tcp
    • n 将域名转换为数字
    • p 显示后面的进程
      在这里插入图片描述
      在这里插入图片描述

-F 指定’:'分隔符分隔

关闭进程

  • ps
  • grep
  • awk
  • Xargs (xargs)
  • kill

ps -ef 显示正在运行的所有进程
在这里插入图片描述

xargs 拿到前面的命令
找到要关闭的进程关闭进程

场景
在这里插入图片描述
在这里插入图片描述

学习资源

  • 高级Bash脚本编程指南
  • LINUX与UNIX SHELL编程指南
  • 鸟哥的Linux私房菜
  • IBM DeveloperWorks
  • 官方文档
  • 阮一峰的《bash脚本教程》
  • Google
  • ceshiren.com

课后作业

  1. 根据输入的关键字来终止进程的运行?
  2. 查看当前开放的端口并根据进程来关闭使用这个端口的进程?

2. 三剑客实战Nginx日志分析

cat !$:重复上一次命令
比如:输入ls /proc/cpuinfo,
然后输入cat !$,就相当于输入了 cat /proc/cpuinfo
df -h 查看系统盘大小


课程价值
掌握shell的管道机制
掌握三剑客的实用用法

大纲
实战环境
nginx 日志解析


文件描述符

  • ls /dev/std*
  • 输入文件 — 标准输入0
  • 输出文件 — 标准输出1
  • 错误输出文件 — 标准错误2
  • :输出重定向

  • 2>:标准错误输出重定向
    • ps -qq 2> e.txt
  • <:输入重定向
    • read y < y.txt 将y.txt里面的第一行内容读取到y
    • (y.txt里面有内容’hello Word’)
  • 2>&1:标准错误输出 重定向到 标准输出
  • /dev/null:所有传给它的东西它都丢弃掉
    • 输出的结果不需要的时候可以输出到空设备
    • ps -qq 2> /dev/null
  • /dev/zero:输入设备,产生无限的空字符
    • cat /dev/zero >> zero.txt
      在这里插入图片描述

Shell输入输出

在这里插入图片描述

管道

  • 把不同程序的输入和输出连接
  • 可以连接更多命令
  • 常见的组合命令Linux三剑客
    在这里插入图片描述

在管道中使用变量

  • unset x:删除x
  • echo hello world |{ read x;echo $x; }
    • {}里内容的两边要有空格
  • echo hello world |while read x;do echo $x;done
    在这里插入图片描述

Linux三剑客 grep + awk + sed

grep

  • ping www.baidu.com |grep 4 --line-buffered |awk '{print $8}'
  • ping www.baidu.com |awk '/5/{print $0}' 遇到5会打印出来
  • ping www.baidu.com |awk '/5/{print $0;fflush()}' |grep 15
    • 如果awk命令在中间放着,后面还需要其他的三剑客的一些命令去做处理的话,要使用fflush()函数去做实时刷新
    • grep使用–line-buffered实时刷新

在这里插入图片描述
在这里插入图片描述

BRE基本正则表达式

  • ^ 开头 $结尾
  • [a-z] [0-9] 区间,如果开头带有 ^ 表示不能匹配区间内的元素
  • * 0个或多个
  • . 表示任意字符

ERE扩展正则表达式

grep -E -P sed -r -E awk
grep --help
ls /bin |wc -l Linux命令数量
在这里插入图片描述

awk

在这里插入图片描述
在这里插入图片描述

awk的字段数据处理
在这里插入图片描述

awk行处理

在这里插入图片描述
在这里插入图片描述

NR显示行号,并且自动变化
在这里插入图片描述

ORS 指定输出分隔符,将/n换为指定的分隔符
在这里插入图片描述

sed

在这里插入图片描述

sed ‘/root/d’ 删除包含root的行
sed -i .bak ‘’ 将源文件拷贝到源文件.bak的文件
-i做备份

cp /etc/passwd
sed -i.bak ‘/root/d’ passwd
源文件已修改,备份文件没变化
head -5 passwd passwd.bak
查看passwd passwd.bak两个文件的前5行

在这里插入图片描述
在这里插入图片描述

action

sed ‘s#()()#\1 \2#’ 几个括号后面就有几个反斜杠 s为搜索
在这里插入图片描述
分组为 扩展 中的表达式,默认sed使用默认表达式,小括号不生效,加-E

在这里插入图片描述

Nginx 日志分析

Nginx 日志分析

200:正常,400:客户端错误,500:服务端错误
cd /tmp 学院服务器的nginx日志在tmp下
ls |grep nginx.log
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关命令简介
在这里插入图片描述

日志数据检索

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

awk 擅长竖列的操作
在这里插入图片描述
在这里插入图片描述

日志数据统计

在这里插入图片描述

awk '{print $(NF-1)}' nginx.log 取出响应时间
统计首页的访问时间 -即有/的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

找出访问量最高的页面地址
在这里插入图片描述


学习资源

  • 高级Bash脚本编程指南
  • LINUX与UNIX SHELL编程指南
  • 鸟哥的Linux私房菜
  • IBM DeveloperWorks
  • 阮一峰的《bash脚本教程》
  • Google

awk官方文档, mac下的awk与gawk并不一致,用法上有一定的差异。

定义函数
# 查看命令
type

awk字段枚举
awk 'NR==1{for(i=1;i<=NF;i++) {print i"="$i} }' nginx.log

课间作业

演练数据

把/tmp/nginx.log文件复制到自己的家目录下,用来演练

实战内容

  • 日志数据检索
    • find_error_log 找出log中的404 500的报错
    • find_before 找出500错误时候的上下文 考察grep高级用法
  • 日志数据统计
    • find_top_10 找出访问量最高的ip 统计分析
  • 数据文件修改
    • url_summary 找出访问量最高的页面地址 借助于sed的统计分析

find_error_log
编写一个函数 find_error_log()
找出log中的404 500的报错
回复的时候按照这个格式

find_error_log() {
}
url_summary(){

}

find_before
找出500错误时候的上下文,找出500错误的前两行 考察grep高级用法,并把这个参数的描述信息贴上

find_before(){
}

find_top_3
找出访问量最高的ip, 统计分析,取出

top3find_top_3(){

}

url_avg_time
找出 /topics 的平均响应时间,响应时间在倒数第二个字段

url_avg_time(){
#易读性好,易修改
awk '$7=="/topics"' nginx.log | awk '{print $(NF-1)}' | awk '{t+=$1}END{print t/NR }'
#高性能
awk '$7=="/topics"{total+=$(NF-1);count+=1}END{print total/count}'  nginx.log

课后作业 url_summary

找出访问量最高的页面地址 借助于sed的统计分析
/topics/16689/replies/124751/edit 把数字替换为 /topics/int/replies/int/edit
/_img/uploads/photo/2018/c54755ee-6bfd-489a-8a39-81a1d7551cbd.png!large 变成 /_img/uploads/photo/2018/id.png!large
/topics/9497 改成 /topics/int
其他规则参考如上
输出
url pattern对应的请求数量
取出top 20请求量的url pattern
类似
nnn urlxxx
mmm urlxxx
url_summary(){
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值