【无标题】

本文介绍了Linux中处理归档文件的`tar`命令,包括创建压缩归档和解压。接着讲解了Shell脚本的基础知识,如文件编写、执行权限、变量定义与引用、参数传递、数组以及流程控制(分支、循环)。还提到了常用的时间调度工具`cron`和监控服务器的基本操作。最后,文章简要讨论了文本分析命令`awk`和`sed`的使用。
摘要由CSDN通过智能技术生成

tar : 
    linux 处理 归档文件的命令 

归档文件:    

普通文件:1.log  1m
归档文件:1.log.tar 1m
压缩文件:1.log.tar.gz 0.9m

1.普通 =》压缩 归档文件  
    1.log =》1.log.tar.gz

tar  -zcvf  xxx.tar.gz file...

    -cf  => 创建一个新归档 +   使用归档文件
    z  => 压缩 gz
    v  =》详细地列出处理的文件

eg: 
    [root@sygy10 ~]# tar -zcvf dir.tar.gz dir2 dir4 jdk-8u212-linux-x64.tar.gz

2.解压 
tar -zxvf  xxx.tar.gz
    -xf => 解压 +使用归档文件
    z  => 压缩 gz
    v  =》详细地列出处理的文件

百度 、谷歌 、 加一个功能 =》 github 码云  flinkcdc =》 maxwell 源码 =》 flink antrl4 sql 

shell :

    1.什么是shell ? 脚本语言  python
        1.一个编程的语言
        2.可以执行的文件
        3.文件内容 linux命令组成的

1.shell语法入门 

1.入门 
    1.文件 xxx.sh 结尾 
    2.第一行 #!/bin/bash

    1.编写脚本 
    vim wc.sh    2.得有执行权限【不一定】
        1.不给文件权限 
      

  sh xxx.sh 

        [root@sygy10 shell]# sh ./wc.sh 
        word count
        [root@sygy10 shell]# cat wc.sh 
        #!/bin/bash
        echo "word count"

        2.给文件 执行权限
      

 [root@sygy10 shell]# chmod 744 ./wc.sh
        [root@sygy10 shell]# ./wc.sh 
        word count

        [root@sygy10 shell]# sh ./wc.sh 
        word count

        补充:
            1.给权限
          

  [root@sygy10 shell]# chmod u+x ./wc.sh
            [root@sygy10 shell]# ./wc.sh 
            word count
            [root@sygy10 shell]# ~/shell/wc.sh 
            word count
            [root@sygy10 shell]# sh ~/shell/wc.sh 
            word count

            2. debug 
            1.[root@sygy10 shell]# sh -x ./wc.sh

            2.
                #!/bin/bash -x
                echo "word count"

2.定义变量 引用

    eg:

    [root@sygy10 shell]# cat variable.sh 
    name="zhangsan"
    dt1="date"
    dt2=`date`
    echo $name
    echo $dt1
    echo $dt2

    1.定义变量的方式:
        key=value
        注意: 
            1.= 前后不能有空格
            2.变量名一般都是大写的【标准】
    2.变量的种类:
        shell中变量的数据类型 =》 string 
        1.静态
            k="v" k='v' k=v
        2.动态 
            k=`v` : v是变量 v系统自带的命令
    3.引用 
        $k 
        ${k} 

任务调度:
    shell =》 
        时间点: T+1 、h+1 20min 
            20220414  =》20220413  
                20220414 0:05
                    1.yarn资源
                    2.看你几点上班 
    crontab 命令 =》 定时调度
    开源框架:
        dophschudule 【恢复数据、重跑数据】
        xxl  【shell -》 】
        azkanban xx 
        ozzio  xx
        airflow 【费劲】
        runduck 
        自己开发

3.shell脚本 参数传递 :
    1.$n 
        $1 $2

    [root@sygy10 shell]# cat parameter.sh 
    echo "脚本文件名: $0"
    echo "第一个参数:$1"
    echo "第二个参数:$2"
    echo "参数个数: $#"
    echo "传递的参数作为一个字符串: $*"
    echo "传递的参数作为一个字符串: $@"
    echo "脚本运行时的pid :$$"

    补充:
        1.传递参数 “空格” 作为符号分割
        2.参数本身带有空格 要加双引号

4.数组 
    语法格式: 
        arr=(v1 v2 ... vn)
        1.数组用()表示
        2.元素用 空格 分割 
    eg: 
        [root@sygy10 shell]# cat arr.sh 
        arr=(zs lisi ww zl)
        echo "所有元素 : ${arr[@]}"
        echo "第一个元素 : ${arr[0]}"
        echo "元素个数 : ${#arr[@]}"


5.流程控制
    分支
    循环 
    1.分支 if  else 

    语法格式:
        if condition;then
            业务代码
        else
            业务代码
        fi

condition => 条件判断语法 
    [ condition ]
    结果:
        非空 true 
        空 false 
        [ hadoop ]

        $? => 获取上一个程序运行的结果 :
                1.成功 0
                2.失败 非0的数据
        条件表达式:
            1.数值判断
                =  等于
                == 等于
                -lt 小于
                -eq 等于 
                -ge 大于等于
                -le 小于等于
                -gt 大于
                -ne 不等于

            2.权限判断 
                -r 
                -w 
                -x 
            3.文件判断 
                -f 
                -e 
                -d 

            eg:
                [root@sygy10 shell]# cat if.sh 
                name1="zs"
                name2="lisi"

                if [ ${name1} == ${name2} ];then
                    echo "等于"
                else 
                    echo "不等于"
                fi
        if elif 语法格式:
            if condition;then
                业务代码
            elif condition;then
                业务代码    
            else
                业务代码
            fi
        
        eg:
            [root@sygy10 shell]# cat if_2.sh 
            score=$1

            if [ ${score} -gt 90 ];then
                echo "优秀"
            elif [ ${score} -ge 60 ];then
                echo "良"
            else 
                echo "不及格"
            fi循环:
    语法格式:
        

foreach:
            for el in item1 item2 ... itemn
            do 
                业务代码
            done 

        for i :
            语法格式 :
                for((i=0;i<size;i++))
                do 
                    业务代码
                done
        eg:
            [root@sygy10 shell]# cat for.sh 
            for x in 1 2 3 4
            do

                echo "${x}"
            done

            echo "-----------------"

            for((i=0;i<5;i++))
            do 
                echo "v is ${i}"
            done

        while:
            while condition
            do 
                业务代码
            done

        eg:
            [root@sygy10 shell]# cat while.sh 
            i=1
            while ((${i}<=5))
            do
                echo "v is ${i}"
                let i++
            done

        总结:
            条件表达式 不能用 <  > 

            while for  能用 < >  不能用 -gt 

            []  =》 条件判断
            ()  =>  数值运算 
            https://blog.csdn.net/taiyang1987912/article/details/39551385?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1

监控 服务器 
    ip hostname 
    linux01 linux02 linux03 

     df  
     free  

    [root@sygy10 shell]# cat split.sh 
    str="linu01,linu02,linux03"
    arr=(${str//,/ })

    for linux  in $arr[@]
    do
        echo ${linux}
    done

    str.split(",")
    shell => 
        IFS变量 =》 字符串分割的效果

补充: linux 文本分析的 命令
    awk  =》 取出文本内容
    sed  =》 文本替换

awk : 
    1.获取列 
    [root@sygy10 shell]# cat 1.log | awk '{print $1}'
    a
    1
    [root@sygy10 shell]# cat 1.log | awk '{print $1,$2}'
    a b
    1 2

    2.获取行 
    [root@sygy10 shell]# cat 1.log | awk 'NR==1{print}'
    a b c
    [root@sygy10 shell]# cat 1.log | awk 'NR==2{print}'
    1 2 3
    [root@sygy10 shell]# cat 1.log | awk 'NR>1{print}'
    1 2 3
    [root@sygy10 shell]# cat 1.log | awk 'NR>=1{print}'

2.sed 
    文本替换 
    1.a 替换成 dd 

    [root@sygy10 shell]# cat 2.log 
    a a b
    1 a 3
    [root@sygy10 shell]# sed -i 's/a/dd/' 2.log  #每行 第一次遇到 a 替换成dd 
    [root@sygy10 shell]# cat 2.log 
    dd a b
    1 dd 3

    2.全局替换 
    把所有的a 都替换成 dd  
    [root@sygy10 shell]# sed -i 's/a/dd/g' 2.log

    坑: 
        [root@sygy10 shell]# sed -i 's#dd#a#g' 2.log

        替换文件路径:
            /path/a 

            p1="/path/a"
            p1="/path1/a1"

            sed -i 's/\/path\/a/\/path1\/a1/g' 3.log

            sed -i 's#/path/a#/path1/a1#g' 3.log

    sql => 文件 

        spark-submit   -f xxx.sql  

        hive -f "sele"
            -e 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值