1. 程式人生 > >大資料技術學習筆記之linux基礎3-軟體管理與shell指令碼開發

大資料技術學習筆記之linux基礎3-軟體管理與shell指令碼開發


一、Linux軟體管理
    -》壓縮檔案管理
        -》常見壓縮格式
            -》zip/rar
            -》zip/.tar.gz/.tar.bz2
                -》unzip
        -》tar:打包或者解包的命令
        -》gzip
            -》字尾:.gz
            -》壓縮:gzip filename
                壓縮以後不保留原始檔
            -》解壓:gunzip filename.gz
        -》bzip2
            -》字尾:.bz2
        -》不支援壓縮資料夾
    -》gzip打包並且壓縮:tar -zcvf target.tar.gz  /directory
        -》解壓:tar -zxvf source.tar.gz -C /target_dir
        .tar.gz  /  .tgz
        
        
        
    -》bzip打包並且壓縮:tar -jcvf target.tar.bz2 /directory
        -》解壓:tar -jxvf source.tar.bz2 -C /target_dir
    -》常用引數
        z:壓縮為gzip格式
        j:壓縮為bzip2格式
        c:打包
        x:解包
        v:顯示
        f:檔名 ,如果使用該引數,該引數必須是最後一個引數,該引數後面一定要跟檔名
        t:text用於檢視壓縮檔案中的內容
            
    -》軟體安裝
        -》windows上的軟體型別:exe、msi、資料夾、bat(指令碼)
        -》Linux的軟體型別:rpm、dpkg、資料夾、原始碼
        -》rpm:Redhat系列最常見的一種軟體格式
            -》名稱
                軟體名稱-版本.作業系統.作業系統版本.格式
                zlib-1.2.3-29.el6.i686.rpm
                zlib-1.2.3-29.el6.x86_64.rpm
                zlib-devel-1.2.3-29.el6.i686.rpm
                zlib-devel-1.2.3-29.el6.x86_64.rpm
                devel、lib、util
            -》檢視:qa
                rpm -qa | grep java
            -》安裝:ivh
                rpm -ivh ****.rpm
                rpm -ivh Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
            -》解除安裝:e
                rpm -e zlib-devel-1.2.3-29.el6.x86_64
                rpm -e  --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
                --nodeps:表示不考慮依賴
                
            -》檢視某個檔案的安裝包:qf
                rpm -qf command
                rpm -qf /bin/ls
            -》檢視某個軟體的安裝檔案
                rpm -ql
            -》rpm無法解決軟體安裝依賴的問題
        -》yum:通過安裝源進行安裝,自動解決依賴的問題
            -》安裝源=軟體庫(本地的、聯網)
            -》檢視:
                yum list : 檢視當前yum源可安裝的所有軟體
                -》國內的:網易163、搜狐、阿里
                    Centos-6-Default.repo
                    /etc/yum.repo.d
            -》檢視已安裝的軟體
                yum list installed
            -》解除安裝:
                yum remove [-y] soft_name
            -》安裝:
                yum  install [-y] soft_name
        -》資料夾
            -》解壓=安裝
            -》配置=修改檔案
            -》啟動
        -》原始碼
            -》c/c++
                -》預編譯:configure
                    ./configure --prefix=/usr
                -》編譯:make
                -》安裝:make install
            -》java    
                -》Maven
                    mvn complie
                    
                    
二、運算子與表示式
    -》環境變數
        -》全域性環境變數:對所有使用者都生效
            /etc/profile
        -》使用者環境變數:只對該使用者生效
            ~/.bash_profile
    -》Linux指令碼中的變數
        -》定義變數的格式
            var=value
        -》列印變數
            echo ${var}
            $var
        -》變數型別:沒有型別
            a=1
            a=aaaa
            a="hello world"
        -》預定義的變數
            -》$1-$9:表示指令碼的第一個到第九個引數
            -》$0:表示當前指令碼的名稱
            -》$!:表示當前程序的pid
            -》$?:表示上一條命令執行的結果
                0:執行成功
                非0:不成功
            -》$#:引數總個數
            -》
[email protected]
:所有引數,分割
            -》$*:所有引數,整體
        -》編寫指令碼:
            -》頭部:#!/bin/bash
            -》內容
        -》定義變數:
            -》變數名稱可讀
            -》系統變數大寫
    -》萬用字元與正則
        -》萬用字元
            *:匹配多個字元
            ?: 匹配單個字元
            ls  find cp
        -》正則表示式
            ^:表示以什麼開頭
            $:表示以什麼結尾
            .:匹配單個字元
            *:匹配多個字元
                .*
            []:範圍
                [0-9]:表示0-9之間的任意一個數字
                [a-z]
                [A-Z]
            \:轉義
            
            -》支援的命令
                grep:過濾資料行
                    grep  'r..t' /etc/passwd
                    grep '[0-9]:[0-9]'  /etc/passwd
                sed:用於資料行的處理
                    sed 's/root/roooot/g' /etc/passwd
                    ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bc.*//g' | sed 's/ //g'
                awk:用於資料列的處理
                    awk -F ':' '{print $1}' passwd
                    awk '/^root/{print $3}' passwd
        -》邏輯連線符
            -》並列:&&,A執行成功的情況下,B才會執行
                ls /etc/passwdd && cat /etc/passwd
            -》或者:||,A執行失敗的情況下,B才會執行
                ls /etc/passwd || cat /etc/passwd
            -》沒有關係:;  A的結果不影響B
        -》數值運算
            -》中括號
                $[ a+b ] $[ $a+$b]
            -》圓括號
                $((a+b)) $(($a+$b))
        -》內建判斷測試
            -》字串
                 = 、 != 、 \>、 \< 、 -z、 -n
                [ $a = $b ]
                -z : 判斷是否為空,如果為空返回true,如果不為空返回false
                -n:判斷是否不為空,不為空返回true,如果為空返回false
                
                -z $a
            -》數值
                中括號:eq nq gt lt ge le
                [ $a -eq $b]
                圓括號:==,!= ,>,<
            -》檔案判斷:
                -e : 判斷某個檔案是否存在
                -f :判斷是否為一個檔案
                -d : 判斷是否為一個目錄
                -r :判斷是否可讀
                -w :判斷是否可寫
                -x : 判斷是否可執行
            -》表示式邏輯連線符
                -a :與
                -o :或
                
                [] -a []
        -》時間日期命令
            -》檢視時間:
                date yyyy-MM-dd HH:mm:ss
                date +"%Y-%M-%d"
                獲取昨天的日期:date -d '1 days ago' +"%Y-%m-%d"
                                date -d '-1 day' +"%Y-%m-%d"
            -》設定時間
                date -s "YYYY-MM-dd HH:mm:ss"
                
    
三、shell指令碼的開發
    -》批處理
    -》自動化執行
    -》開發:
        -》頭部
            #!/bin/bash
        -》內容
            -》變數
            -》迴圈
                for
                while
            -》判斷
                if
                case
            -》函式
            -》退出
                exit
        -》執行:
            -》執行檔案:./filename.sh
                -》檔案必須有可執行許可權
                -》必須寫頭部
            -》通過命令執行檔案
                sh
                bash
                
    -》for迴圈
    for  條件
    do
        exec command
    done
    
    for((i=1;i<y;i++))
    do
        exec command
    done
    
    -》判斷
        if []
        then
            exec
        elif []
        elif []
        else
        fi
        
        case 變數 in
        value1)
            exec command1;;
        value2)
            exec command;;
        *)
            exec command;;
        esac
        
        
四、Linux定時任務
    —》方便定時去執行Linux任務
    -》安裝crontab
    -》編輯定時任務:crontab -e
        -》格式
            *        *        *        *        *    command/shell
            分        時        日        月        周
            00-59    00-23    1-31    1-12    0-7
            
        -》特殊情況
            每2小時:*        */2        *        *        *
            每天3,4,5點執行:00        3,4,5        *        *        *
            每天3到5點執行:*        3-5        *        *    *
        -》刪除定時任務
            crontab -e 刪除對應的任務即可
            crontab -r :刪除所有定時任務