zoukankan      html  css  js  c++  java
  • Linux shell脚本学习

    1.cgmod +x ./文件

    获取执行权限,使脚本具有执行权限

    2.  ./name.sh  执行脚本

    ./为当前目录 直接使用name.sh系统会去PATH里面找name.sh,而PATH里只有/bin /sbin /usr/bin等。使用./代表当前目录 说名在当前目录找。

    3.开头#!是与一个约定的标记,约定本脚本需要什么解释器来执行,使用哪一种shell执行

    bash: bash是Linux系统默认使用的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。

    ash: ash shell 是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。

    sh: sh 由Steve Bourne开发,是Bourne Shell的缩写,各种UNIX系统都配有sh。

     4.变量:

    LOGS_PATH=/usr/local/nginx/logs

    name="value" 

    Linux 统计需要命令:

    shell:

    tail

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

    tail [参数] [文件]

    vim

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

    但是目前我们使用比较多的是 vim 编辑器。

    vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

    top

     Linux top命令用于实时显示 process 的动态。

    使用权限:所有使用者。

    语法

    top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

    参数说明

    • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
    • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
    • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
    • s : 安全模式,将交谈式指令取消, 避免潜在的危机
    • i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
    • n : 更新的次数,完成后将会退出 top
    • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

    cat

     cat 命令用于连接文件并打印到标准输出设备上。

    使用权限

    所有使用者

    语法格式

    cat [-AbeEnstTuv] [--help] [--version] fileName

    参数说明:

    -n 或 --number:由 1 开始对所有输出的行数编号。

    -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

    -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

    -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

    -E 或 --show-ends : 在每行结束处显示 $。

    -T 或 --show-tabs: 将 TAB 字符显示为 ^I。

    -e : 等价于 -vE。

    -A, --show-all:等价于 -vET。

    -e:等价于"-vE"选项;

    -t:等价于"-vT"选项;

    ===========================

    #!/bin/bash

    reset_terminal=$(tput sgr0)
    #变量name
    nginx_log_path='/usr/local/nginx/logs/access.log'

    #the log of nginx afer or before test filter haha
    nginx_log_pawkpath='/uer/local/nginx/logs/nginx_after.log'

    #filter log only with http code

    echoFun(){
    echo -e 'E[32m' "$1" $reset_terminal $2
    }



    check_http_status(){

    http_code_100=$(grep -o '1[0-9][0-9]' ${nginx_log_path} | wc -l)
    http_code_200=$(grep -o '2[0-9][0-9]' ${nginx_log_path} | wc -l)
    http_code_300=$(grep -o '3[0-9][0-9]' ${nginx_log_path} | wc -l)
    http_code_400=$(grep -o '4[0-9][0-9]' ${nginx_log_path} | wc -l)
    http_code_500=$(grep -o '5[0-9][0-9]' ${nginx_log_path} | wc -l)
    http_code_total=$(grep -o '[1-5][0-9]' ${nginx_log_awkpath} | wc -l)

    echoFun "http status[100]" "${http_conde_100}"
    echoFun "http status[200]" "${http_conde_200}"
    echoFun "http status[300]" "${http_conde_300}"
    echoFun "http status[400]" "${http_conde_400}"
    echoFun "http status[500]" "${http_conde_500}"
    echoFun "http status total" "${http_conde_total}"
    }

    check_http_code(){
    http_code_403=$(grep -o '403' ${nginx_log_awkpath} | -l)
    http_code_404=$(grep -o '404' ${nginx_log_awkpath} | -l)

    echoFun "http status[403]" "${http_code_403}"
    echoFun "http status[404]" "${http_code_404}"

    }


    check_http_status
    check_http_code

    ===========================

    reset_terminal=$(tput sgr0)

    tput:改变终端输出属性

     grep -o

    @符号可以获取数组中的所有元素

    echo ${array_name[@]}



    参数处理说明
    $# 传递到脚本的参数个数
    $* 以一个单字符串显示所有向脚本传递的参数。
    如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $$ 脚本运行的当前进程ID号
    $! 后台运行的最后一个进程的ID号
    $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
    如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
    $- 显示Shell使用的当前选项,与set命令功能相同。
    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
  • 相关阅读:
    NodeJS3-1基础API----Path(路径)
    NodeJS2-6环境&调试----debug
    NodeJS2-5环境&调试----process(进程)
    NodeJS2-4环境&调试----global变量
    NodeJS2-3环境&调试----module.exports与exports的区别
    短视频秒播优化实践(二)
    短视频秒播优化实践(一)
    仿抖音上下滑动播放视频
    带着问题,再读ijkplayer源码
    上班一个月,后悔当初着急入职的选择了
  • 原文地址:https://www.cnblogs.com/meijsuger/p/9041255.html
Copyright © 2011-2022 走看看