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
        光盘: 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/   压缩
}


你可能感兴趣的:(Linux基础知识汇总(1)...持续更新中)