天天看點

Linux基礎知識彙總(1)...持續更新中

linux啟動流程: {
        1. BLOS  識别硬體,自我測試,導向MBR
        2. MBR  提供菜單選擇系統項 , grup
        3. Boot loader   kernel 與 加載記憶體及檢測硬體情況
        4. 核心檔案   加載init程序 基本指令 ls ,cp , 其他軟體加載到記憶體中
        5. 配置檔案   /etc/rc.d/rc.sysinit
        6. 執行服務的啟動
        7. 加載 /etc/rc.d/rc.local
    }      
shell特殊符号: {
    # 注釋
    \ 轉義
    | 管道  用于資料定向  cat etc/passwd | cut -d: -f1
    ; 分隔符
    ~ 使用者根目錄
    $ 變量符号
    & 作業控制
    ! 非
    / 目錄符号
    >> > 資料輸出
    < << 資料輸入
    '' "" ``
    ()
    {}
}      
shell腳本程式設計: (用于系統維護,自動化管理,檢測) {
    習慣良好的程式設計習慣
    #!/bin/bash  作為起始描述.
    定義變量 declare -i num=1  declare -s str="sss"
    執行shell腳本   source xxx.sh(父程序中執行,可更新配置檔案)   bash xxx.sh
    bash -x xxx.sh  執行調試
    輸入 read -p "" var  輸出 echo -e  (格式化輸出)
    字元的作用  ''  隻做字元的引用  ""  還可做變量的引用  ``  指令做執行結果
                                                                                            
    測試包含: 1. 數字測試   2. 字元測試  3. 檔案測試
    1.數字測試   -gt  -lt  -ge  -le  -eq  -ne  可用中括号完成
    2.字元測試   ==  =~ 正則比對測試 !=   -n  判斷字元是否為空  null位真  -z  可用兩對中括号完成
    3.檔案測試   -e 存在 -f 普通檔案 -d 目錄 -b 塊裝置 -c 正規表達式字元裝置 -S socket檔案 -p FIFO檔案 (鍵盤裝置??) -L 連接配接檔案  可用中括号完成
    -nt file1是否比file2新?  -ot  file2是否比file2舊?  -ef  兩個檔案的inode号是否一緻
    4.檔案權限測試   -r  -w  -x
                                                                                            
    多條件判斷  && || !
        個人傾向   [ a ] && [ b ]   可有:  [[ a && b ]]  [ a && y ]
    變量分類:
    本地變量   可由使用者定義,隻能在目前的上下文中使用,其他shell均沒有權限
        定義  num=1   但在使用的時候   $1
    局部變量   $?   目前指令執行的狀态
    環境變量   比如shell腳本第一句導入,就是環境變量,目前的shell可以通路環境變量 比如$path
    位置變量   #1 #2 #2  與shell腳本執行的參數變量
    特殊變量   $#(參數個數) $@(總參數清單)
    算數運算:  let sum+=2
    流程控制:
        if [ conditions ]; then fi
        if [ conditions ]; then else fi
        if [ conditions ]; then elif [ conditions ]; then else fi
        case $1 in
            "a")
            ;;
            "b")
            ;;
              *)
            ;;
        esac
        for $i in 清單; do
        done
        清單生成
            1. for i in 1 6 8;
            2. for i in /usr/log/*
            3. for i in {0..10}
               for i in `seq 1 10 1`
               for i in `seq 1 $line 2`
        for (( i=0; i<n; i++ )); do
        done
        while [ conditions ]; do
        done
        while read line; do
        done < /etc/passwd
        until [ !conditions ]; do
        done
    函數定義: function name() {
                echo $1
             }
             name 1
    shift: 參數輪替
}      
shell特性重定向: {
    每一個指令都支援支援最基本的linux标準輸入和輸出
    ls /etc/passwd   可将資訊輸出到使用者頻幕上
    ./a.txt < /etc/passwd    ./a.txt << /etc/passwd   講資訊輸入到a ??
    cat /etc/passwd > ./a.txt   >>
    可以在set -C 禁止覆寫
    &>   和錯誤也定向輸出
    cat /dev/zero > /dev    清空硬碟
    ls /etc &> /dev/null    講錯誤定向到null區域
    雙向重定向   tee   輸出螢幕和檔案  tee 後一般是檔案
}      
shell指令: {
    cat   輸出
    ll = ls -l
    who  誰線上
    cut  講資訊進行切割   cut -d' ' -f1 (-d 切割字元   -f  擷取切割段)
    grep  對檔案進行正則比對查找   (grep "" 檔案 / cat /etc/passwd | grep "")
    last  最後登陸資訊 20條
    export  列印目前使用者的環境
    sprt 排序 sort -t '' -k 3 (-t 切割字元 -k 切割後的條件)
    uniq  排除重複
    wc  -c -l  (字元數  ,   檔案行數)
    tr '[A-Z]' '[a-z]'  大小寫轉換
}      
shell常用目錄或檔案: {
    /etc/passwd   賬戶資訊
    /dev/null    null黑洞
    /dev/zero    zero0用于填充磁盤
    /etc/rc.d/rc.init    啟動資訊
    /etc/vimrc   ~/.vimrc   vim配置資訊
    /proc/partitions  分區資訊
    /proc/cpuinfo   /proc/meminfo   cpu meminfo資訊
    /etc/fstab  挂載點資訊(可更新)   /proc/mounts   詳細  /etc/mtab
    /proc/sys/vm/swapiness    記憶體政策  是否啟用交換分區
    /etc/mdadm.conf    陣列配置資訊
    /proc/mdstat      整列裝置資訊
    /dev/rc.d/rc.sysinit   開機啟動項
    /etc/sysconfig/network-scripts/ifcfg-eth0   網絡配置
    /etc/yum.conf    /etc/yum.repos.d/*   軟體源配置
    /etc/issue   歡迎資訊
    /boot/grup    引導器      /boot/grup/menu.lst  引導清單
    /etc/man.config    man文檔比對
    /etc/profile.d   腳本配置目錄
    /usr/include    頭檔案目錄
    /etc/ld.so.conf.d/    庫檔案所在
    /proc/meminfo    記憶體資訊
}      
vim的使用: {
        模式:
            編輯模式  預設/esc  指令模式  :  輸入模式  i  可視模式  v
        按鍵:
            編輯模式             gg
                移動      ^ h j k l $    可與數字配合   10j
                              G
                ZZ  退出
                dd  删除整行  d
                o   新插入一行
                yy  複制整行  y
                p   粘貼
                J   合并行
                u   還原   ctrl+r  撤銷
                r   替換一個字元
                CTRL+w s   視窗分割
            可視模式  v  V  選擇塊   行
            指令模式  / 搜尋  :n,md  從n到m删除    :n,ms/原内容(     可正則)/       新内容/g   :wq  儲存退出    :q!  強制退出
                                                                                 
        設定:
            nu  ai  sm  括号比對  syntax 文法
        其他問題:
        編碼:
            可設定目前主機  LANG=
        斷行符:
            UNIX2dos -k 檔案
            dos2UNIX -k 檔案
        語系編碼轉換:
            iconv -f 原編碼 -t 現編碼 filename newfilenamew
    }      
磁盤管理: 建立普通 {
    磁盤有實體和邏輯結果組成(機械式)
    實體結構:  扇區  512KB 實體結構最小機關  扇面   柱面  分區最小機關 (千層餅??)
    在磁盤的第一個扇區  有446KB的MBR主引導   分區表64KB  (16*4) 2KB辨別位
    邏輯結構:  磁盤被分為許多block, inode
    衆多的block組成了block  group  ->  super block,檔案描述資訊,inode talbe,block bitmap,inode bitmap,block
        檔案描述資訊: 描述上述東西的存在
        super block: 描述block,inode數量   使用量
        block: 最小邏輯機關   1K  2K  4K
        inode: 記錄block12個block的位置   共128byte   一般情況下擁有12個直接  1一個間接  1個雙間接  1個三間接
        block bitmap: 記錄block的使用情況
        inode bitmap: 記錄inode的使用情況
    常見檔案系統格式:
        基本: ext2  ext3  ext4  Reiserfs(小)  JFS   vfat  xfs(大)
        叢集: GFS2 , OCFS2
        網路: NFS , smbfs
        CD光牒: ISO9660
        交換分區: SWAP
    分區磁盤分為兩種情況:
        1, 已存在系統
            kpartx -i /dev/sda
            kpartx -af /dev/sda
            partx -a /dev/sda
        2, 新磁盤
    操作:
        檢視cat /proc/partitions 磁盤資訊
        1. 分區   fdisk   sfdisk   parted
        2. 格式化  mkfs   mkfs.exts   mk2efs (在格式化也可對檔案系統調整)
        3. 資訊檢視/調整
            blkid (格式化後檔案系統資訊)
            dumpe2fs (超級塊資訊)
            tune2fs (調整檔案系統選項)
            e2label (改變label)
            hdparm  (硬體資訊)
            resize2fs  (從新調整大小)
        4. 檢測   fsck   e2fsck
        5. 交換分區  mkswap  swapon/off
        6. 挂載    mount   umount  (手動,開機)
        過程中需要使用到的資訊
        fuser 挂載占用 df 磁盤空閑狀态 du 目錄評估占用 dd 填充 ln 連結
}      
磁盤管理: raid {
        HBA        檢視機器raid情況  /proc/mdstat
        raid的出現是為了   1.提高 讀 a 寫 b 速度  2. 容錯能力  3. 備份  4.使用率  5. 至少數量
                                                                           
        raid 0     yes   no   no    100    2
        raid 1     1a    yes  yes    50    2
        raid 5     yes   yes  no  n-1/n    3
        raid01     1a    yes  yes n-2/n    4
        raid10     yes   yes  yes n-2/n    4
        jbad  連接配接磁盤
        執行個體:建立一個空間大小為10G的RAID5裝置,要求其chunk大小為1024K,格式經為ext4檔案系統,開機可自動挂載至/backup目錄,并支援acl功能;
            mdadm -C /dev/md0 -a yes -l 5 -n 4 -c 1024K /dev/sdb /dev/sdc /dev/sdd /dev/sde
            # 隻有陣列完畢才可以格式化
            mkfs -t ext4 /dev/md0
            #調整絕大數磁盤資訊
            tune2fs -o acl /dev/md0
            可以調整目錄的label的名字
            e2label /dev/md0 "xxxx"
            dumpe2fs -h /dev/md0
            #編輯/etc/fstab
            /dev/md0                /backup                 ext4    defaults        0 0
            UUID=5dc72528-30ef-44cd-a38f-7fd0ee176a46 /backup                 ext4    defaults        0 0
    }      
磁盤管理: LVM {
    LVM:  邏輯卷管理器(可彈性管理磁盤政策)  擴容不需要停止業務     縮容需要停止業務
    分區之後的實體盤加入到卷組中(邏輯概念)之後假如邏輯卷(中間多了一個中間層,由核心驅動完成,核心提供了這樣的中間層)
    流程:
        1. 将需要假如LVM的磁盤格式化
        2. pvcreate /dev/sd{a-z}
        3. vgcreate -s 16M vgname /dev/sd{a-z}
        4. lvcreate -L 容量 lvname vgname
        5. 挂載 /dev/vgname/lvname
    動态其他操作:
        1. 擴容   先擴大實體容量,再邏輯容量
        2. 縮小   先縮小邏輯容量,再實體容量
    練習:
        1、建立一個由兩個實體卷組成大小為20G的卷組myvg,要求PE大小16M;而後建立 大小為7G邏輯卷mylv1,要求其檔案系統為ext4,塊大小為2048,且開機能自動挂載至/users;
        2、建立使用者openstack,其家目錄為/users/openstack,而後切換至openstack使用者,複制一些檔案至其家目錄中;
        3、縮減mylv1至5G大小;而後切換至openstack使用者,確定其資料沒有丢失;
        4、對mylv1建立快照卷snap-mylv1,并通過其備份資料至/tmp/user.tar.bz2;
        #1
        pvscan
        pvcreate /dev/sd{b,c}
        pvdisplay
        vgcreate -s 16M test /dev/sd{b,c}
        vgscan
        vgdisplay
        lvcreate -L 7G -n mylv test
        mkfs -t ext4 /dev/test/mylv
        tune2fs -r 2048 /dev/test/mylv
        vi /etc/mdadm.conf
        ARRAY /dev/md0 UUID=5dc72528-30ef-44cd-a38f-7fd0ee176a46
        #編輯/etc/fstab
        /dev/md0                /backup                 ext4    defaults        0 0
        UUID=5dc72528-30ef-44cd-a38f-7fd0ee176a46 /backup                 ext4    defaults        0 0
        #2
        useradd openstack -d /users
        su openstack
        cp -rf /var/* /users
        #3
        pvdisplay
        umount /dev/test/mylv
        e2fsck -f /dev/test/mylv
        resize2fs /dev/test/mylv 5G
        mount /dev/test/mylv /users
        lvresize -L 5G /dev/test/mylv
        #4 快照
        lvcreate -L 50M -s -n mylv-snap /dev/test/mylv
        mkdir /snap
        mount /dev/test/mylv-snap /snap
        tar -jcf /snap/* > /tmp/user.tar.bz2
        tar -jcv -f /tmp/user.tar.bz2 /snap/
}      
壓縮,歸檔工具: {
    這裡包含壓縮和歸檔的過程,兩個在這裡就不區分了,因為使用非常簡單
    tar -c 建立壓縮/歸檔檔案夾
        -x 解壓壓縮/歸檔檔案
        -f 欲解壓壓縮的檔案或包
        -j 對應使用gzip壓縮工具
        -z 對應使用bzip2壓縮工具
        -J 對應使用xz壓縮工具
        -v 檢視解壓壓縮過程
    執行個體  在解壓和壓縮的過程   j J z 都可以省略  自動判斷字尾選擇壓縮工具
        tar -xf nginx-1.4.2.tar.gz    解壓
        tar -cf axel-2.4.tar.bz axel-2.4/   壓縮
}      

繼續閱讀