美文网首页软件测试学习资料
cmd&linux:linux实践操作

cmd&linux:linux实践操作

作者: 果芽软件 | 来源:发表于2017-12-14 11:47 被阅读273次

    一、学习环境

    安装linux模拟器:git-bash

    二、基础命令

    ## 增
    新建文件:touch a.log
    新建文件夹:mkdir dir1
    
    ## 删
    删除文件:rm -rf a.log(文件可不加-rf)
    删除文件夹:rm -rf dir1(-r递归,-f强删不需要确认)
    
    ## 改
    复制文件:cp a.log a.log.bak
    复制文件夹:cp -r dir1 dir2
    
    移动文件:mv a.log dir2
    重命名文件:mv a.log.bak a.log(同一个文件夹下面就是重命名)
    
    ## 查
    查询文件夹:ls -al dir1/ (-a所有文件,包括隐藏文件;-l列表方式显示;dir1/文件夹路径)
    当前所在路径:pwd
    

    三、文件信息

    ## 详情
    drwxr-xr-x 1 Administrator 197121   0 十一 24 15:42  BaiduNetdisk/
    -rw-r--r-- 1 Administrator 197121 415 十一  9 21:06  Hello.class
    
    ## 类型
    1. d开头,是文件夹
    2. -开头,是文件
    
    ## 权限
    1. r:read读
    2. w:write写
    3. x:execute执行
    
    ## 角色
    1. g:group组(每个用户都必须有一个归属群组)
    2. u:user用户
    3. o:其它用户
    
    ### 权限-角色
    1. r-x是u用户的权限:读和执行权限
    2. rwx是g群组的权限:读写执行权限,没有写的权限(-标识没有)
    3. r-x是o其它用户的权限:读和执行的权限,没有写的权限(-标识没有)
    
    ## 管理权限
    1. 组合因子:
      chmod:命令
      ugoa:3种角色(a代表所有角色)
      +-=:3种运算符
      rwx:3种权限
    
    2. 使用规则
    语法:chmod 角色 运算符 权限 文件名
    chmod u+x test.sh
    
    3. 使用场景
    一般拷贝一个脚本到服务器,默认没有执行权限,要先赋权
    
    

    四、编辑文件

    vi b.log

    1. 3种模式

    1. 命令模式(按esc切换到命令模式):常用命令i、a、o、x、hjkl,数字+命令
    2. 编辑模式(最下方有“insert”或者“插入”提示)
    3. 末行模式(先esc进入命令模式,再输入冒号)

    练习1:三种模式切换

    1. vi b.log新建文件并编辑
    2. 按“i”命令,进入编辑模式(下方出现insert或者插入)
    3. 输入“hello world”
    4. 按esc进入命令模式(下方insert或者插入提示没了)
    5. 按esc确保进入命令模式,按“o”命令,进入编辑模式,新插入1行
    6. 输入“你好,师姐!”
    7. 按esc进入命令模式
    8. 按“:”冒号,进入末行模式
    9. 输入“wq”命令,保存并退出
    10. cat命令,查看文件的全部内容:cat b.log

    练习2:快速定位

    1. vi c.log
    2. 输入“i”命令,进入编辑模式
    3. 输入“Hello everyone ,my name is guoyasoft !”
    4. esc进入命令模式
    5. 输入“^”命令,移动光标到行首(也就是正则表达式的行首符号)
    6. 输入“$”命令,移动光标到行尾(同正则表达式)
    7. 输入“^”命令,回到行首,按“w”命令,一个单词一个单词的移动光标
    8. 输入“^”命令,回到行首,按“5”,再按“w”,一下移动5个单词
    9. 查询:esc进入命令模式,按“/”命令,输入要查询的字符串,回车确认,按n定位下一个

    练习3:修改

    1. 手工替换:vi进入,i进入编辑模式
    2. 删字符:x(删1个字符),数字+x(删多个字符)
    3. 删行:dd(删1行),数字+x(删多行)
    4. 替换单个字符:esc命令模式,输入“r”命令,输入要替换成的字符
    5. 批量替换:输入“:”进入末行模式,输入“%s/要替换的字符/要替换成的字符/g”
    将全部guoyasoft替换成GuoyaSoft
    :%s/guoyasoft/GuoyaSoft/g
    其中s是替换命令,/g是全局替换
    (不加,每一行只会替换第一个匹配的,加了,会把一行中所有匹配的都替换)
    (不管是否加/g,如果有多行,每一行都会替换第1个)
    

    练习:撤销和反撤销

    1. 撤销:esc进入命令模式,按“u”命令,回退之前的操作
    2. 反撤销:esc进入命令模式,按“ctrl+r”,撤销刚刚的回退

    练习4:保存和放弃保存

    1. 保存并退出:按“:”进入末行模式,输入“wq”
    2. 不保存并退出:按“:”进入末行模式,输入“q!”

    练习5:设置

    1. 显示行号,按esc,再按“:”,输入“set nu”。

    统计文件内容

    ## 命令
    wc catalina.2017-11-05.log
    ## 结果
      1349   8095 108970 catalina.2017-11-05.log
    ## 解析
    1349行
    8095个单词
    108970个字节
    

    1. 定位文件

    find  文件夹路径 -name '匹配的字符串'
    
    find ./ -name 'cata*.out'
    从当前目录下开始查找,含有cata开头,.out结尾的所有文件 
    

    到tomcat/logs下面找一个最大的日志文件,手工复制到test文件夹下面

    1. 查找c盘下,所有以“catalina”开头,“.log”结尾的文件,
      find /c -name 'catalina*.log'
    /c/software/apache-tomcat-7.0.79/logs/catalina.2017-11-05.log
    /c/software/apache-tomcat-7.0.79/logs/catalina.2017-11-27.log
    /c/software/apache-tomcat-7.0.79/logs/catalina.2017-12-11.log
    
    1. 查找e盘下,以“catalina”开头,“.log”结尾的文件,find e -name 'catalina*.log'
    2. 统计catalina.2017-11-05.log该文件的字节大小、单词个数、行数

    2. 定位要查询的字符串所在文件位置

    ## 命令
    
    grep -rn --text '18616765946' ./
    ## 解释
    grep:全局查询打印命令
    -r:递归查询,也就是遇到子文件夹,会查询子文件夹
    -n:打印行号
    --text:以文本的形式查询
    ‘18616765946’:要查询的字符串,可以写正则表达式
    ./:“.”当前目录,也可以指定其他目录,即:要查找的文件夹
    ## 结果
    ./test/new_aj:54:ʮһ▒▒ 1861676594605, 2017 4:56:36 ▒▒▒▒ org.apache.catalina.core.AprLifecycleListener initializeSSL
    

    3. 进入文件,查看上下文详情

    more从前往后,一页一页的往后翻
    
    ## 命令1:
    more new_aj
    ## 最下方会显示已看百分比:
    --More--(0%)
    ## 命令2:“/”查询,类似vi,也类似windows的ctrl f
    /18616765946
    

    4. 下载日志(太大需要拆分)

    4. 将catalina.2017-11-05.log拆分成10个小文件
    ## 命令
    split -l 100 catalina.2017-11-05.log new_
    ## 结果
    a.log  c.log                    new_aa  new_ac  new_ae  new_ag  new_ai  new_ak  new_am
    b.log  catalina.2017-11-05.log  new_ab  new_ad  new_af  new_ah  new_aj  new_al  new_an
    
    备注:要重新合并
    cat new_*> new_catalina.out
    

    第二中下载日志:

    grep '18616765946' logs/* > log.bak
    

    5. 重现日志,或者验证修复效果,看实时动态日志

    ## 进入c盘
    cd /c
    ## 查找tomcat启动脚本
    find ./ -name startup.sh
    结果:
    ./software/apache-tomcat-7.0.79/bin/startup.sh
    
    ## 执行启动脚本
    ./software/apache-tomcat-7.0.79/bin/startup.sh
    
    ## 查找tomcat日志文件
    find ./ -name cata*.out
    结果:
    ./software/apache-tomcat-7.0.79/logs/catalina.out
    
    ## 查看日志文件最新日志
    tail -200f ./software/apache-tomcat-7.0.79/logs/catalina.out
    
    按回车加空行,便于查看
    

    打包和压缩

    常见压缩包 打包/压缩命令 解压/包命令 注释
    .tar tar cvf FileName.tar DirName tar xvf FileName.tar
    .gz gzip FileName gunzip FileName.gz 不用
    .tar.gz 和 .tgz tar zcvf FileName.tar.gz DirName tar zxvf FileName.tar.gz 推荐,必须掌握
    .zip zip FileName.zip DirName unzip FileName.zip 一般只用unzip解压,本地上传时打成zip包,掌握
    .rar 一般不用

    tomcat:


    image.png

    maven:


    image.png

    练习

    1. 将new_开头的文件夹全部打包成一个文件
    tar cvf catalina.2017-11-05.log.tar new_*
    
    1. 删除所有的new_开头的文件夹
      rm -rf new_*

    2. 将tar包解压
      tar xvf catalina.2017-11-05.log.tar

    3. 将所有new_开头的文件夹,打包压缩成.tar.gz
      tar zcvf catalina.2017-11-05.log.tar.gz new_*

    4. 删除new_开头的文件夹,并将.tar.gz包解压
      rm -rf new_*
      tar zxvf catalina.2017-11-05.log.tar.gz

    5. 在windos中,将new_开头的文件压缩成.zip,再用linux命令解压
      unzip catalina.2017-11-05.log.zip

    查看进程

    进程的含义

    操作系统,将内存、cpu等资源,打包给应用使用,是分配资源的基本单元

    应用启动后,通过ps命令,查看进程的状态

    ps -ef查看进程信息,类似windows的进程管理器

    管道符

    |

    使用管道符对进程信息筛选

    查询进程,筛选shccs01用户下的进程,再筛选含tomcat的进程,再筛选含ux的进程
    ps -ef | grep shccs01 | grep tomcat | grep ux

    重定向

    作用:将获取的信息存到文件
    练习:

    1. 将test目录含g的文件找到
    ## 命令
    ls | grep g
    ## 结果
    a.log
    b.log
    c.log
    catalina.2017-11-05.log
    catalina.2017-11-05.log.tar
    catalina.2017-11-05.log.tar.gz
    
    
    1. 将找到的结果保存到d.log
    ## 普通做法:拷贝,再建空白文件,打开文件,粘贴保存退出
    ## 重定向的做法:
    ## 命令1
    ls | grep g > d.log
    ## 命令2
    cat d.log
    ## 结果:
    a.log
    b.log
    c.log
    catalina.2017-11-05.log
    catalina.2017-11-05.log.tar
    catalina.2017-11-05.log.tar.gz
    new_ag
    
    
    1. 查出含“cata”的文件,并重定向到d.log
    ## 命令
    ls | grep 'cata' > d.log
    cat d.log
    ## 结果
    catalina.2017-11-05.log
    catalina.2017-11-05.log.tar
    catalina.2017-11-05.log.tar.gz
    原先的内容没了,一个>是覆盖的方式写入
    
    1. 追加的方式重定向>>
    ## 命令
    ls | grep g >> d.log
    cat d.log
    ## 结果
    catalina.2017-11-05.log
    catalina.2017-11-05.log.tar
    catalina.2017-11-05.log.tar.gz
    a.log
    b.log
    c.log
    catalina.2017-11-05.log
    catalina.2017-11-05.log.tar
    catalina.2017-11-05.log.tar.gz
    d.log
    new_ag
    

    杀进程

    kill -9 进程号
    [shccs01 ~]$ps -ef | grep shccs01 | grep tomcat | grep ux

    shccs01 18839 1 0 Dec11 ? 00:02:09 /usr/lib/jvm/jdk1.8.0_11/bin/java -Djava.util.logging.config.file=/unibss/users/shccs01/server/tomcat/ux/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m -classpath /unibss/users/shccs01/server/tomcat/ux/bin/bootstrap.jar:/unibss/users/shccs01/server/tomcat/ux/bin/tomcat-juli.jar -Dcatalina.base=/unibss/users/shccs01/server/tomcat/ux -Dcatalina.home=/unibss/users/shccs01/server/tomcat/ux -Djava.io.tmpdir=/unibss/users/shccs01/server/tomcat/ux/temp org.apache.catalina.startup.Bootstrap start

    [shccs01 ~]$kill -9 18839

    查看端口

    查询8080端口对应的进程号

    ## 命令
    netstat -ano | findstr "8080"
    ## 结果:进程号2656
      TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING      ` 2656`
    

    查看2656进程对应的应用程序

    ## 命令
    tasklist |  findstr “2656”
    
    ## 结果
    java.exe                      2656 Console                    1    148,248 K
    
    ## 确定是一个java虚拟机,tomcat是java程序
    
    ## 按照进程号杀掉进程
    taskkill  /pid 4364
    

    对比linux和cmd

    对比项 linux cmd
    查端口 netstat netstat
    查进程 ps -ef tasklist
    管道符 竖线 竖线
    查询包含指定串的行 grep '查询串' findstr '查询串'
    杀进程 kill -9 进程号 taskkill /f /pid 进程号

    网络

    1. ping ip:查看网络是否通
    2. traceroute ip:查看通不通,并显示网络节点,能定位到哪个节点不通

    相关文章

      网友评论

        本文标题:cmd&linux:linux实践操作

        本文链接:https://www.haomeiwen.com/subject/huuhwxtx.html