4

学会Linux,看完这篇就行了! - 测试蔡坨坨

 2 years ago
source link: https://www.cnblogs.com/caituotuo/p/16709411.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

学会Linux,看完这篇就行了!

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/797ab07d.html


你好,我是测试蔡坨坨。

对于测试同学来说,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安装包以及搭建好的虚拟机文件可关注公众号测试蔡坨坨回复关键词虚拟机获取。

    202209171545305.png

    操作步骤:

    1. 下载并安装VMware工具

      202209171240415.png
    2. 下载搭建好的虚拟机文件(centOS7,已安装Java环境及MySQL数据库)

      202209171545425.png

    3. 打开虚拟机文件

      202209171547265.png
    4. 开机并打开网络连接,可查看IP地址并通过Xsheel和Xftp工具连接

      202209171542539.png
      202209171249147.png
      202209171251161.png
      202209171525760.png

Linux服务器一般都是在远程,因此我们需要通过工具去连接远程服务器,工具也是多种多样,这里推荐Xshell和Xftp。

202209171257864.png

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

    202209171354295.png
    参数 含义
    -p 直接将所有的目录,包含上一级目录,递归创建起来。例如:mkdir -p ctt1/ctt2/ctt3,再使用ls -R ctt1查看递归目录。
    202209171356587.png
  • rmdir命令(remove directory)

    功能描述:删除空目录。

    格式:rmdir [参数] [目录名1] [目录名2] ...

    例如:rmdir caituotuo

    202209171424271.png
    参数 含义
    -p 删除指定目录,如果这个指定目录被删除后,它所在的父目录为空,也会一并删除。 例如:rmdir -p ctt1/ctt2/ctt3
    202209171425637.png

    PS:无法删除成功的原因可能是目录非空或要删除的目录是当前目录。

  • cd命令(change directory)

    功能描述:切换目录,改变用户所在的目录。

    格式:cd [目录名]

    例如:cd /etc

    绝对路径 由根目录/开始写起。例如:cd /root/chs1/chs2/chs3
    相对路径 不是由根目录/写起。例如:已经在/root目录下,直接写cd chs1/chs2/chs3

    202209171426719.png

    202209171426079.png

    命令 含义
    cd 返回当前用户的主目录。
    cd ~ 返回当前用户的主目录。
    cd .. 返回到当前目录的上一级目录。
    cd ../.. 返回到当前目录的上两级目录。
    cd / 进入到根目录。

    202209171427637.png

  • pwd命令(print work directory)

    功能描述:打印用户当前所处的绝对路径。

    格式:pwd

    202209171107289.png

  • 功能描述:文本编辑器,生成新文件(文件不存在的时候)或者编辑、查看文件(文件存在),注意:是文件不是文件夹。

    格式:vi [file_name]

    例如:vi caituotuo

    • Insert

      编辑模式(点击键盘insert按钮,或者i,a,o)

      标志:左下角出现-- INSERT --

    • 命令模式(点击键盘左上角Esc按钮)

      标志:左下角-- INSERT -- 消失

    命令模式下可执行操作 含义
    :w 保存文件。
    :wq 保存并退出。
    :wq! 保存并强制退出。
    :q 退出。
    x 删除一个字符。
    $ 光标移到文本的行尾。
    G 光标移到文本的末尾。(如果是root用户在操作,跳转到最后一行的第一个字母;其他用户则跳转到最后一个字符)
    gg 跳转文件第一行。
    / 查找某个字符串,例如:/caituotuo(表示查到当前位置第一次出现caituotuo的地方)
    202209171429174.png
  • cat命令

    功能描述:显示文本内容。

    格式:cat [文本文件名字]

    例如:cat bcbx_csh2

    202209171430780.png
  • cp命令(copy)

    功能描述:复制文件或目录。

    格式:cp [源文件] [目标文件夹路径(推荐使用绝对路径)]

    例如:cp bcbx_chs2 chs1

    202209171431363.png
    参数 含义
    -r 递归持续复制,用来复制文件夹。
    -f 强制复制
    -v 详细:显示文件的复制进度。(相当于复制完成的提示工作)
    -i 互动:如果文件将覆盖目标中的文件,他会提示确认。
    202209171431194.png
  • rm命令(remove)

    功能描述:用来删除文件或目录。

    格式:rm [文件名](会提示“是否删除***文件”,这个命令不能直接删除文件)

    例如:rm bcbx_chs2

    202209171432623.png
    参数 含义
    -r/R 删除文件夹。
    -f 强制删除,没有提示。
    -rf 强制删除文件或文件夹。

    202209171432715.png

  • 功能描述:移动或重命名文件与文件夹。

    mv [源文件夹/文件] [目标文件夹/文件](重命名)

    mv [源文件/文件夹] [目标文件夹](把某个文件或文件夹移动到某个文件夹里面)

    例如:mv bcbx_chs chs1

    202209171432129.png
    202209171432573.png
    参数 含义
    -i 互动:如果选择的文件会覆盖目标中的文件,他会提示确认。
    -f 强制:不提示地移动文件。
    -v 详细:显示文件的移动进度。(相当于移动完成的提示工作)
  • find命令

    功能描述:在指定文件夹下查找文件或文件夹,并打印绝对路径。(忘记某个文件或者文件夹的位置或名称时使用)

    格式:find [路径] -name “文件夹或者文件名字(部分名字加 * , * 为通配符)”

    情景 命令
    知道名字全称 find / -name "bcbx_chs"
    只知道名字开头 find / -name "bcbx*"
    只知道名字结尾 find / -name "*_chs"
    知道开头和结尾,忘记中间部分 find / -name "bc*hs"
    20201214232146.png
  • tar命令

    功能描述:压缩和解压文件。

    压缩:tar -cvf [压缩后的包名](建议以.tar结尾,方便识别) [想要压缩的文件]

    解压:tar -xvf [压缩包的名字]

    tar -cvf chs.tar bcbx_chs2 bcbx_chs3.txt

    tar -xvf chs.tar

    202209171433692.png
    202209171433263.png
    命令 功能
    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

    202209171433497.png
    参数 含义
    -n 后面接数字,表示显示几行的意思。
    -f 表示持续侦测后面所接的文件,要等到按下ctrl + c退出tail的侦测。
    202209171433573.png
  • echo命令

    功能描述:在显示屏上回显字符串或者用来查看环境变量的值(相当于打印输出print)。

    格式:echo [需要显示的内容]

    参数 含义
    >> 表示将输出的内容追加到文件的最后一行。
    > 覆盖写。

    例如:echo 'chstext' >> bcbx_chs2

    202209171433769.png
  • touch命令

    功能描述:创建文本(但是不能插入内容)。

    格式:touch [文本文件名字]

    例如:touch bcbx_chs3.txt

    可以创建多个文本:touch [名字1] [名字2] [名字3]

    202209171434978.png

系统管理命令

  • hostname命令

    功能描述:显示主机名称。

    参数 含义
    -i 显示主机的ip地址。
    202209171434251.png
  • clear命令

    功能描述:清屏(这个命令将会刷新屏幕,本质上只是让终端显示页向前翻一页,如果向上滚动屏幕,还可以看到之前的操作信息。)

    202209171434963.png
  • top命令

    功能描述:实时查看当前的进程,动态的,可以看到CPU最近的负载等信息。(相当于Windows的任务管理器)

    202209171434046.png
  • 功能描述:用来显示当前的进程状态。(查看计算机系统中有哪些程序正在执行及执行的情况,用它来查找所有的进程ID)

    参数 含义
    -e 显示所有进程。
    -f 显示程序间的关系。

    格式:ps -ef | grep [进程名]

    例如:ps -ef | grep nginx(查看nginx进程的状态)

    202209171435608.png

    ps -ef 未指定哪个进程则显示所有进程:

    202209171435830.png
    选项 含义
    UID 用户ID
    PID 进程ID
    PPID 父进程
    C CPU占用率
    STIME 系统启动时间
    TTY 登入者的终端机位置
    TIME 耗时
    CMD COMMAND命令,行为
  • kill命令

    功能描述:杀掉进程(用来终止一个正在执行中的进程)

    格式:kill [进程号]

    例如:kill -9 25280

    参数 含义
    -9 强制杀掉进程

    202209171435726.png

  • shutdown命令

    功能描述:关机。

  • logout命令

    功能描述:注销。

  • reboot命令

    功能描述:重启。

  • ping命令

    功能描述:确定网络和格外部主机的状态。

    格式:ping [地址]

    例如:ping www.caituotuo.top

    202209171436308.png
  • 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命令

    功能描述:显示网络设备的状态。

    202209171436591.png

用户和用户组管理命令

用户组管理
  • cat /etc/group

    功能描述:查看用户组。

    选项 含义
    组名 组名是用户组的名称,右字母或数字构成。与/etc/passwd中的登录名一样,组名不应该重复。
    口令 口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空或x。
    组标识号 组标示号与用户标识类似,也是一个整数,被系统内部用来表示组,别称GID。
    202209171437072.png
  • groupadd命令

    功能描述:增加用户组。

    格式:groupadd [组名]

    例如:groupadd chs1zu

    202209171437611.png
  • groupmod命令

    功能描述:修改用户组。

    例如:groupmod -n chs2zu chs1zu(将用户组chs1zu修改为新的用户组chs2zu)

    参数 含义
    -n 将用户组的名字修改为新名字。
    202209171437389.png
  • groupdel命令

    功能描述:删除用户组

    格式:groupdel [用户组名]

    例如:groupdel chs2zu

    202209171437157.png
  • cat /etc/passwd

    功能描述:查看用户。

    选项 含义
    用户名 代表用户账号的字符串,通常长度不超过8个字符,并且由大小写字母或数字组成,登录名中不能含有冒号(😃,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不适用连字符(-)和加号(+)打头。
    口令 存放加密后的用户口令字,存放一个特殊的字符,例如x或*,把真正的加密后的用户口令字存放到/etc/shadow文件中。
    用户标识号 是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一 一对应的。
    组标识号 字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
    202209171438978.png
  • useradd命令

    功能描述:增加用户。

    格式:useradd [用户名] [参数]

    例如:useradd chs -c xuesheng -g chs1zu

    参数 含义
    -c 指定一段注释性描述。
    -g 指定用户所属的用户组。
    202209171438249.png
  • usermod命令

    功能描述:修改用户。

    修改用户名:usermod -l caihs chs

    修改描述:usermod -c bcbxxuesheng caihs

    修改用户所属的用户组:usermod -g chs2zu caihs

    参数 含义
    -l 指定一个新的账号,即将原来的用户名改为新的用户名。
    -c 修改描述。
    -g 修改用户所属的用户组。
    202209171438324.png
    202209171438108.png
  • userdel命令

    功能描述:删除用户。

    格式:userdel [用户名]

    例如:userdel chs1

    202209171438245.png
  • passwd命令

    功能描述:为用户设置密码。

    格式:passwd [用户名]

    例如:passwd chs

    202209171438292.png
权限相关的命令
  • 功能描述:切换用户。(root用户切换到其他用户不需要密码,普通用户切换到root或其他用户需要密码)

    格式:su [用户名]

    例如:su chs

    202209171439750.png

  • chown命令

    功能描述:更改文件的拥有者。

    格式:chown [用户]:[用户组] 文件

    例如:chown chs:chs1zu hh

    参数 含义
    -R 更改文件夹的拥有者。
  • chmod命令

    功能描述:改变文件或文件夹的权限。

    格式:chmod [三位数字] [文件/文件夹]

    例如:chmod 777 hh

    权限代号 数字代号 含义
    r 4 读取权限
    w 2 写入权限
    x 1 执行或切换权限
    - 0 不具有任何权限

    PS:一共有10个字符,第1个字符表示文件类型,后面9个字符表示文件权限,分为三组,每组3个字符,分别代表所属用户权限、同一组的权限、除所属用户和同一组外的其他人权限。

    文件类型 含义
    - 表示普通文件,普通文件指文本文件和二进制文件,例如:chs、chs.txt
    d 表示文件夹(directory)。
    l 表示符号连接文件,后面会用->打印出它指向的文件。
    s 表示socket文件。
    p 表示管道文件(pipe)。
    202209171439722.png
    参数 含义
    -R 对目前目录下的所有文件与子目录进行相同的权限变更(以递回的方式逐个变更)

    202209171439142.png

查看磁盘和内存空间命令

  • 功能描述:显示指定磁盘文件的可用空间。

    PS:重点看使用率,避免使用率超过80%。

    类似Windows的C D E F 盘总览。

    参数 含义
    -h 自动以KB、MB、GB的单位显示,可读性高。
    202209171440871.png
    选项 含义
    Filesystem 磁盘
    Size 磁盘总大小
    Used 已使用磁盘大小
    Avail 还可用的磁盘大小
    Use% 磁盘使用率
    Mounted on 挂载到哪个目录下
  • 功能描述:显示每个文件和目录的磁盘使用空间。

    参数 含义
    -h 以K(kb)、M(兆)、G为单位显示,可读性高。(最常用)

    du -sh ./*(当前目录下的所有文件和文件夹的大小)

    202209171440084.png
  • free命令

    功能描述:显示系统使用和空间的内存情况。

    参数 含义
    -k 以KB为单位显示内存使用情况。(默认单位I)
    -m 以MB为单位显示内存使用情况。
    -g 以GB为单位显示内存使用情况。

    202209171440314.png

    选项 含义
    total 总计物理内存的大小
    used 已使用多大
    free 可用有多少
    shared 多个进程共享的内存总额
    buff/cache 磁盘缓存的大小
    available 可回收利用的大小
    swap 指的是一个交换分区或文件
  • netstat命令

    功能描述: 查看端口。

    例如:netstat -ntpl

    参数 含义
    -n 直接使用IP地址,而不通过域名服务器。
    -t 显示TCP传输协议的连线状况。
    -p 显示正在使用Socket的程序识别码和程序名称。
    -l 显示监控中的服务器的Socket。
    202209171440861.png
  • ./ :表示当前路径下,比如:./start.sh all

  • history:查看历史命令操作记录。

  • ls -l /usr > chs:将/usr目录中的文件列表输出到chs文件中。(> 表示重定向输出)

    202209171442257.png

    202209171442464.png

    image-20210124215529249
    image-20210124215609769
  • uname -n:显示主机名称。

    参数 含义
    -a/--all 显示全部信息
    -m/--machine 显示电脑类型
    -n/--nodename 显示在网络上的主机名称
    -r/--release 显示操作系统的发行编号
    -s/--sysname 显示操作系统名称
    -v 显示操作系统的版本
    --version 显示操作系统版本信息
    image-20210124222229416
    image-20210124222351914
    image-20210124222505279
    image-20210124222653595image-20210124222825697image-20210124222905889
    image-20210124222952722
  • who:查询当前登录在系统上的用户信息。

    参数 含义
    who -m 显示执行该命令的登录用户信息
    who am i 等同于who -m
    whoami 查询当前有效用户的用户名
    202209171443030.png
  • cat /proc/meminfo:查看内存使用情况。(当然也可以使用top、free)

    202209171444099.png

以上就是一些Linux常用命令,Linux命令还有很多,记不住怎么办,记住常用的即可,其他现用现查呗:https://www.linuxcool.com


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK