对于测试同学来说,Linux基本属于必学必会内容,招聘要求中基本都会出现Linux相关字眼,面试也经常被问到,原因很简单,因为现在公司的服务器绝大多数都是Linux,如果你一无所知,很多时候听不懂别人在说什么,自然而然也很难开展工作。
那么对于测试人员来说,Linux在日常工作中有哪些应用场景呢?
搭建测试环境
对于测试环境的搭建,稍微具备一定规模的公司,一般是由专门的运维人员进行环境搭建和维护,包括生产环境和测试环境;如果只有几个人的初创公司,都不存在运维这个岗位,那么自然而然就需要测试人员或开发人员来搭建了;有时候需要本地部署测试,因此也可能需要测试人员自己搭建一套环境。
查看日志,分析定位Bug
查看日志用的比较多的就是tail和grep这两个命令,前者是动态查找,后者是查找。
先说一下tail动态查找,一般格式为
tail -f -n
,-f 表示持续侦测,实时请求一下页面或者接口就会刷新的日志出来,比如tail -f logs/catalina.out,要等到按下ctrl+c
才能退出tail的侦测,-n 这里的n需要替换成具体的数字,表示显示几行的意思,如tail -5 caituotuo.log就表示查看末尾5行。再说一下grep查找,一般是根据开发代码中打印的关键字信息去查找日志,比如关键字是caituotuo,就可以使用grep caituotuo test.log进行查找,对于关键字是什么,日志文件名是什么,以及去哪个服务器里面查找等问题如果不清楚可以问下开发同学。现在一般都是微服务架构,不同的服务处理不同的业务,可能就会有多类日志文件,比如前台日志、后台日志、缓存日志等,每类日志可能还会根据时间进行分别存储,比如按日生成一份日志文件2022-9-17.log、2022-9-18.log,不同公司可能不太一样,但是方式都是大同小异。
性能监控,监控操作系统服务器硬件资源
监控CPU会用到top命令;监控内存会用到free命令如free /proc/meminfo;监控磁盘会用到df、du命令;监控网络会用到netstat命令,如netstat -ntpl。
同时监控以上四个资源可以用到vmstat或dstat,也可以用可视化工具nmon对操作系统硬件资源进行监控。
修改配置文件
比如:修改Tomcat端口号 vi server.xml
以上说了这么多,可见测试人员具备Linux技能是十分重要的,下面就来介绍一下Linux以及一些常用命令。
Linux简介
作者
林纳斯·托瓦兹(Linux Torvalds),的电脑程序员、黑客、Linux内核的发明人及该计划的合作者。
“有些人生来就是具有统率百万人的风范;另一些人则是写出颠覆世界的软件而生。一个能同时做到这两者的人,就是托瓦兹。”
美国《时代》周刊对“Linux之父”林纳斯·托瓦兹(Linux Torvalds)给出了极高的评价。甚至,在《时代》周刊根据读者投票评选出的二十世纪100位重要人物中,林纳斯·托瓦兹(Linux Torvalds)居然排到了第15位,而从20世纪的后几年就开始霸占全球首富称号的比尔盖茨(微软,Windows)不过才是第17位。
Linux版本
Linux的发行版本其实就是Linux核心(通过uname -a命令可以查看),再加上国外的实用程序组成的一个大软件包而已。
Linux常用的发行版本:
- Ubuntu:Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“Ubuntu”一词(译为乌帮托或乌班图)。
- Red Hat:Red Hat Linux是全世界应用广泛的Linux之一,Red Hat因其易于安装而闻名,在很大程度上减轻了用户安装程序的负担。
- CentOS:CentOS是Community ENTerprise Operating System的简称,CentOS正是这个Red Hat的克隆版本,CentOS可以像Red Hat一样的构筑Linux系统环境,但不需要向Red Hat付任何的产品和服务费用,同时也得不到任何有偿技术支持和升级服务。
Linux优势
企业部署软件的服务器为什么大多数会选择Linux系统,在我看来主要有以下几个优点:
- Linux系统所执行各种程序的速度是比windows要快很多的。
- 在windows中我们会安装不同杀毒软件来保证计算机不被各种病毒攻击,但在Linux中你可以完全放心,只要有病毒在Linux中运行,不出几个小时Linux的各个版本都会进行更新,因为全世界的程序员都在维护它,因此Linux要比windows安全。
- 在Windows中安装各种软件的时候,很多软件都会需要计算机进行重启才可以进行使用,重启导致客户体验差,但在Linux中根本不需要重启计算机,每安装一种软件都会有相应的服务,只需要使用命令重启软件服务即可。
- Windows太浪费系统资源,但是Linux不会,在Linux系统启动后,内存与CPU消耗的资源非常少,但Windows只要一启动就会占用很大的内存。
- 在Windows中进行编程的时候,我们要安装不同的开发软件之类的,但是在Linux,我们只需要学会一种,vi命令(纯文本的方式)就可以了。
Linux虚拟机
对于想练习Linux命令的同学,首先需要有一台Linux操作系统的虚拟机,提供几种方法:
自行购买一台云服务器
在线练习Linux命令网站:https://copy.sh/v86/?profile=archlinux
在本机上搭建虚拟机(例如通过VMware工具搭建)
需要
VMware安装包
以及搭建好的虚拟机文件
可关注公众号测试蔡坨坨
回复关键词虚拟机
获取。操作步骤:
下载并安装VMware工具
下载搭建好的虚拟机文件(centOS7,已安装Java环境及MySQL数据库)
打开虚拟机文件
开机并打开网络连接,可查看IP地址并通过Xsheel和Xftp工具连接
远程工具
Linux服务器一般都是在远程,因此我们需要通过工具去连接远程服务器,工具也是多种多样,这里推荐Xshell和Xftp。
Linux常用命令
文件和目录的相关命令
ls命令(list directory)
功能描述:列出指定目录下的文件和文件夹名称。
格式:ls [参数] [目录或文件]
参数 含义 -a 列举目录中的全部文件,包括隐藏文件(开头为 . 的文件为隐藏文件)。 -l 长数据串列出,列举目录中的细节,包含权限(r/w/x/-)、所有者、组群、大小、创建日期、文件是否是链接等(不包含隐藏文件)。可以使用ll代替ls -l ,表示列出当前路径下的所有文件及文件夹的详细信息。 -R 递归查询,不仅查看当前目录下所包含的内容,还会把子目录的内容一并查询出来。 -al 列举目录中的细节,包含权限、所有者、组群、大小、创建日期、文件是否是链接等(含隐藏文件)。 -r 逆向查询,从后面向前地列举目录中的内容。 -s 文件大小,以数据块(Linux中自己的一种数据大小的表示形式)的形式做表示。 ls -l caituotuo.txt 列举文件caituotuo.txt的所有信息,也可以指定目录,例如:ls -l /etc。 mkdir命令(make directory)
功能描述:创建新目录/文件夹。
格式:mkdir [目录名1] [目录名2] ...(想要一次性创建多个目录可以使用空格隔开)
例如:mkdir caituotuo
参数 含义 -p 直接将所有的目录,包含上一级目录,递归创建起来。例如:mkdir -p ctt1/ctt2/ctt3,再使用ls -R ctt1查看递归目录。 rmdir命令(remove directory)
功能描述:删除空目录。
格式:rmdir [参数] [目录名1] [目录名2] ...
例如:rmdir caituotuo
参数 含义 -p 删除指定目录,如果这个指定目录被删除后,它所在的父目录为空,也会一并删除。 例如:rmdir -p ctt1/ctt2/ctt3 PS:无法删除成功的原因可能是目录非空或要删除的目录是当前目录。
cd命令(change directory)
功能描述:切换目录,改变用户所在的目录。
格式:cd [目录名]
例如:cd /etc
路径 由根目录/开始写起。例如:cd /root/chs1/chs2/chs3 相对路径 不是由根目录/写起。例如:已经在/root目录下,直接写cd chs1/chs2/chs3 命令 含义 cd 返回当前用户的主目录。 cd ~ 返回当前用户的主目录。 cd .. 返回到当前目录的上一级目录。 cd ../.. 返回到当前目录的上两级目录。 cd / 进入到根目录。 pwd命令(print work directory)
功能描述:打印用户当前所处的路径。
格式:pwd
vi命令
功能描述:文本编辑器,生成新文件(文件不存在的时候)或者编辑、查看文件(文件存在),注意:是文件不是文件夹。
格式:vi [file_name]
例如:vi caituotuo
模式:
Insert
编辑模式(点击键盘insert按钮,或者i,a,o)
标志:左下角出现-- INSERT --
Esc
命令模式(点击键盘左上角Esc按钮)
标志:左下角-- INSERT -- 消失
命令模式下可执行操作 含义 :w 保存文件。 :wq 保存并退出。 :wq! 保存并强制退出。 :q 退出。 x 删除一个字符。 $ 光标移到文本的行尾。 G 光标移到文本的末尾。(如果是root用户在操作,跳转到后一行的个字母;其他用户则跳转到后一个字符) gg 跳转文件行。 / 查找某个字符串,例如:/caituotuo(表示查到当前位置次出现caituotuo的地方) cat命令
功能描述:显示文本内容。
格式:cat [文本文件名字]
例如:cat bcbx_csh2
cp命令(copy)
功能描述:复制文件或目录。
格式:cp [源文件] [目标文件夹路径(推荐使用路径)]
例如:cp bcbx_chs2 chs1
参数 含义 -r 递归持续复制,用来复制文件夹。 -f 强制复制 -v 详细:显示文件的复制进度。(相当于复制完成的提示工作) -i 互动:如果文件将覆盖目标中的文件,他会提示确认。 rm命令(remove)
功能描述:用来删除文件或目录。
格式:rm [文件名](会提示“是否删除***文件”,这个命令不能直接删除文件)
例如:rm bcbx_chs2
参数 含义 -r/R 删除文件夹。 -f 强制删除,没有提示。 -rf 强制删除文件或文件夹。 mv命令
功能描述:移动或重命名文件与文件夹。
格式:
mv [源文件夹/文件] [目标文件夹/文件](重命名)
mv [源文件/文件夹] [目标文件夹](把某个文件或文件夹移动到某个文件夹里面)
例如:mv bcbx_chs chs1
参数 含义 -i 互动:如果选择的文件会覆盖目标中的文件,他会提示确认。 -f 强制:不提示地移动文件。 -v 详细:显示文件的移动进度。(相当于移动完成的提示工作) find命令
功能描述:在指定文件夹下查找文件或文件夹,并打印路径。(忘记某个文件或者文件夹的位置或名称时使用)
格式:find [路径] -name “文件夹或者文件名字(部分名字加 * , * 为通配符)”
情景 命令 知道名字全称 find / -name "bcbx_chs" 只知道名字开头 find / -name "bcbx*" 只知道名字结尾 find / -name "*_chs" 知道开头和结尾,忘记中间部分 find / -name "bc*hs" tar命令
功能描述:压缩和解压文件。
格式:
压缩:tar -cvf [压缩后的包名](建议以.tar结尾,方便识别) [想要压缩的文件]
解压:tar -xvf [压缩包的名字]
例如:
tar -cvf chs.tar bcbx_chs2 bcbx_chs3.txt
tar -xvf chs.tar
命令 功能 tar -zcvf chs.tar.gz chs/ 将chs目录把包成chs.tar.gz tar -jcvf chs.tar.bz2 chs/ 将chs目录把包成chs.tar.bz2 tar -zxvf chs.tar.gz -C opt/ctt 将压缩包chs.tar.gz中的文件解压到opt/ctt中 tar -jxvf chs.tar.bz2 解压缩chs.tar.bz2 参数 作用 -c create,打包 -x extract,解包 -v verbose,显示打包/解包的详细过程 -f file,表示打包输出/解包输入文件 -z 后缀名为gz -j 后缀名为bz2 -C change to directory DIR,将压缩包中的文件解压到指定位置 tail命令
功能描述:查看文件结尾的10行。
格式:tail [文件]
例如:tail bcbx_chs2
参数 含义 -n 后面接数字,表示显示几行的意思。 -f 表示持续侦测后面所接的文件,要等到按下ctrl + c退出tail的侦测。 echo命令
功能描述:在显示屏上回显字符串或者用来查看环境变量的值(相当于打印输出print)。
格式:echo [需要显示的内容]
参数 含义 >> 表示将输出的内容追加到文件的后一行。 > 覆盖写。 例如:echo 'chstext' >> bcbx_chs2
touch命令
功能描述:创建文本(但是不能插入内容)。
格式:touch [文本文件名字]
例如:touch bcbx_chs3.txt
可以创建多个文本:touch [名字1] [名字2] [名字3]
系统管理命令
hostname命令
功能描述:显示主机名称。
参数 含义 -i 显示主机的ip地址。 clear命令
功能描述:清屏(这个命令将会刷新屏幕,本质上只是让终端显示页向前翻一页,如果向上滚动屏幕,还可以看到之前的操作信息。)
top命令
功能描述:实时查看当前的进程,动态的,可以看到CPU近的负载等信息。(相当于Windows的任务管理器)
ps命令
功能描述:用来显示当前的进程状态。(查看计算机系统中有哪些程序正在执行及执行的情况,用它来查找所有的进程ID)
参数 含义 -e 显示所有进程。 -f 显示程序间的关系。 格式:ps -ef | grep [进程名]
例如:ps -ef | grep nginx(查看nginx进程的状态)
ps -ef 未指定哪个进程则显示所有进程:
选项 含义 UID 用户ID PID 进程ID PPID 父进程 C CPU占用率 STIME 系统启动时间 TTY 登入者的终端机位置 TIME 耗时 CMD COMMAND命令,行为 kill命令
功能描述:杀掉进程(用来终止一个正在执行中的进程)
格式:kill [进程号]
例如:kill -9 25280
参数 含义 -9 强制杀掉进程 shutdown命令
功能描述:关机。
logout命令
功能描述:注销。
reboot命令
功能描述:重启。
ping命令
功能描述:确定网络和格外部主机的状态。
格式:ping [地址]
例如:ping www.caituotuo.top
date命令
功能描述:显示或设置系统当前的时间和日期。
格式:
date [参数] [日期/时间]
修改日期:date -s 日期
修改时间:date -s 时间
例如:
修改日期:date -s 2020-11-23
修改时间:date -s 18:19:11
同时修改日期和时间:date -s "2020-11-23 18:19:11"
ifconfig命令
功能描述:显示网络设备的状态。
用户和用户组管理命令
用户组管理
cat /etc/group
功能描述:查看用户组。
选项 含义 组名 组名是用户组的名称,右字母或数字构成。与/etc/passwd中的登录名一样,组名不应该重复。 口令 口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空或x。 组标识号 组标示号与用户标识类似,也是一个整数,被系统内部用来表示组,别称GID。 groupadd命令
功能描述:增加用户组。
格式:groupadd [组名]
例如:groupadd chs1zu
groupmod命令
功能描述:修改用户组。
例如:groupmod -n chs2zu chs1zu(将用户组chs1zu修改为新的用户组chs2zu)
参数 含义 -n 将用户组的名字修改为新名字。 groupdel命令
功能描述:删除用户组
格式:groupdel [用户组名]
例如:groupdel chs2zu
用户管理
cat /etc/passwd
功能描述:查看用户。
选项 含义 用户名 代表用户账号的字符串,通常长度不超过8个字符,并且由大小写字母或数字组成,登录名中不能含有冒号(😃,因为冒号在这里是分隔符。为了兼容起见,登录名中好不要包含点字符(.),并且不适用连字符(-)和加号(+)打头。 口令 存放加密后的用户口令字,存放一个特殊的字符,例如x或*,把真正的加密后的用户口令字存放到/etc/shadow文件中。 用户标识号 是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一 一对应的。 组标识号 字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。 useradd命令
功能描述:增加用户。
格式:useradd [用户名] [参数]
例如:useradd chs -c xuesheng -g chs1zu
参数 含义 -c 指定一段注释性描述。 -g 指定用户所属的用户组。 usermod命令
功能描述:修改用户。
例如:
修改用户名:usermod -l caihs chs
修改描述:usermod -c bcbxxuesheng caihs
修改用户所属的用户组:usermod -g chs2zu caihs
参数 含义 -l 指定一个新的账号,即将原来的用户名改为新的用户名。 -c 修改描述。 -g 修改用户所属的用户组。 userdel命令
功能描述:删除用户。
格式:userdel [用户名]
例如:userdel chs1
passwd命令
功能描述:为用户设置密码。
格式:passwd [用户名]
例如:passwd chs
权限相关的命令
su命令
功能描述:切换用户。(root用户切换到其他用户不需要密码,普通用户切换到root或其他用户需要密码)
格式:su [用户名]
例如:su chs
chown命令
功能描述:更改文件的拥有者。
格式:chown [用户]:[用户组] 文件
例如:chown chs:chs1zu hh
参数 含义 -R 更改文件夹的拥有者。 chmod命令
功能描述:改变文件或文件夹的权限。
格式:chmod [三位数字] [文件/文件夹]
例如:chmod 777 hh
权限代号 数字代号 含义 r 4 读取权限 w 2 写入权限 x 1 执行或切换权限 - 不具有任何权限 PS:一共有10个字符,第1个字符表示文件类型,后面9个字符表示文件权限,分为三组,每组3个字符,分别代表所属用户权限、同一组的权限、除所属用户和同一组外的其他人权限。
文件类型 含义 - 表示普通文件,普通文件指文本文件和二进制文件,例如:chs、chs.txt d 表示文件夹(directory)。 l 表示符号连接文件,后面会用->打印出它指向的文件。 s 表示socket文件。 p 表示管道文件(pipe)。 参数 含义 -R 对目前目录下的所有文件与子目录进行相同的权限变更(以递回的方式逐个变更)
查看磁盘和内存空间命令
df命令
功能描述:显示指定磁盘文件的可用空间。
PS:重点看使用率,避免使用率超过80%。
类似Windows的C D E F 盘总览。
参数 含义 -h 自动以KB、MB、GB的单位显示,可读性高。 选项 含义 Filesystem 磁盘 Size 磁盘总大小 Used 已使用磁盘大小 Avail 还可用的磁盘大小 Use% 磁盘使用率 Mounted on 挂载到哪个目录下 du命令
功能描述:显示每个文件和目录的磁盘使用空间。
参数 含义 -h 以K(kb)、M(兆)、G为单位显示,可读性高。(常用) du -sh ./*(当前目录下的所有文件和文件夹的大小)
free命令
功能描述:显示系统使用和空间的内存情况。
参数 含义 -k 以KB为单位显示内存使用情况。(默认单位I) -m 以MB为单位显示内存使用情况。 -g 以GB为单位显示内存使用情况。 选项 含义 total 总计物理内存的大小 used 已使用多大 free 可用有多少 shared 多个进程共享的内存总额 buff/cache 磁盘缓存的大小 available 可回收利用的大小 swap 指的是一个交换分区或文件 netstat命令
功能描述: 查看端口。
例如:netstat -ntpl
参数 含义 -n 直接使用IP地址,而不通过域名服务器。 -t 显示TCP传输协议的连线状况。 -p 显示正在使用Socket的程序识别码和程序名称。 -l 显示监控中的服务器的Socket。
其他命令
./ :表示当前路径下,比如:./start.sh all
history:查看历史命令操作记录。
ls -l /usr > chs:将/usr目录中的文件列表输出到chs文件中。(> 表示重定向输出)
uname -n:显示主机名称。
参数 含义 -a/--all 显示全部信息 -m/--machine 显示电脑类型 -n/--nodename 显示在网络上的主机名称 -r/--release 显示操作系统的发行编号 -s/--sysname 显示操作系统名称 -v 显示操作系统的版本 --version 显示操作系统版本信息 who:查询当前登录在系统上的用户信息。
参数 含义 who -m 显示执行该命令的登录用户信息 who am i 等同于who -m whoami 查询当前有效用户的用户名 cat /proc/meminfo:查看内存使用情况。(当然也可以使用top、free)
以上就是一些Linux常用命令,Linux命令还有很多,记不住怎么办,记住常用的即可,其他现用现查呗:https://www.linuxcool.com。