linux运维实战练习-2016年1月19日-2月3日课程作业

1、描述centos6系统开机启动流程;

    a.开机BIOS加电自检测各种硬件信息

    b.读取第一个可启动设备MBR,加载grub

    c.依据boot loader的设置初始化内核信息,内核依据initrd虚拟的磁盘和文件系统实现对根文件系统的挂载

    d.切换到根文件系统,

    e.启动系统第一个进程init,准备好系统所需要的各项服务

    f.登录界面

2、描述/etc/rc.d/sysinit脚本功能;

    通过分析代码查看sysinit所具有的功能有:

    a.取得网络环境与主机名

    b.激活udev和selinux

    c.挂载/etc/fstab文件中定义的文件系统

    d.去检测根文件系统,并以读写方式重装挂载根文件系统

    e.设置系统时钟;

    f.激活swap设备

    g.根据/etc/sysctl.conf文件设置内核参数

    h.激活lvm及软raid设备

    i.加载额外设备的驱动程序

    j.清理操作

3、总结文本处理工具sed及awk的用法;(必须附带示例)

    a.sed工具:sed是文本流编辑器,逐行对文件的内容进行处理

        用法:sed [option] ... 'script' inputfile...

        选项:

            -n:静默模式,不输出模式空间的内容至屏幕

            -e:实现多点的功能编辑

            -f /path/from/script_file:从指定的文件读取编辑脚本

            -r:支持使用扩展的正则表达式

        地址界面方法:

            (1)不给地址:对全文进行处理

            (2)一个地址(单地址)

                #:指定的行

                /pattern/:被引用处模式所能够匹配到的每一行:

            (3)地址范围   

                 #,#:从第几行到第几行

                 #,+#:显示从第几行开始向后的N行

                 /pat1/,/pat2/:同时匹配2个参数

                  #,/pat1/:显示第几行匹配的内容

            (4)~:步进

     #sed -n 1~2p test.txt(第一行开始,每次增加2行,意思就是显示奇数行)

                    wKioL1alnKTgHi-xAAAOMdzPE2U512.png

     #sed -n 2~2p test.txt(从第二行开始显示,每次增加2行,意思就是显示偶数行)

                    wKiom1alnImw_VKlAAAMWugNcPc102.png

编辑命令:

        d:删除被地址界定选定的内容

        p:显示(打印)模式空间中的内容到屏幕上,只打印符合条件的行

        a \text:在行后面追加文本:支持使用\n实现多行追加;

        i \text:在行前面追加文本:支持使用\n实现多行追加;

        c \text:替换行为单行或多行文本:

        w /path/to/somefile:保存模式空间中匹配到的内容至指定文件中;

        r /path/from/somefile:读取指定文件的文本游戏 至模式空间中匹配到的行后;

        =:为模式空间中的行,打印行号;

        !:取反条件;对除了模式匹配到的行以外的行,进行操作;

        s///:支持使用其它分隔符,s@@@,s###

替换标记:

g:行内全局进行替换:例:sed -n [email protected]@&er@ /etc/passwd  不带g选项,只替换每一行的第一次

p:如果替换成功,则显示替换成功的行

w /path/to/somefile:将替换成功的行保存至指定文件中

        练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符

        #sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf

        练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

        #sed 's@^#[[:space:]]\+@@' /etc/fstab 

        练习3echo一个绝对路径给sed命令,取出其基名:

        #echo "/etc/sysconfig" | sed 's@[^/]\+$@@'

        高级编辑命令:

        h:把模式空间中的内容覆盖至保持空间中;

        H:把模式空间的内容追加至保持空间中;

        g:从保持空间取出数据覆盖至模式空间;

        G:从保持空间取出数据追加至模式空间;

        x:把模式空间中内容与保持空间中的内容进行互换操作

        n:读取匹配到的行的下一行至模式空间;

        N:追加匹配到的行的下一行至模式空间;

        d:删除模式空间中的行;删除单行

        D:删除多行模式空间中的所有行;

        #sed -n n;p FILE(最出偶数行)

        #sed 1!G;h;$!d test.txt(逆行显示文件内容)

        #sed $!N;$!D test.txt(读文件的后2)

        #sed $!d test.txt(最出文件最后一行)

        #sed G test.txt(在每一行下面加一个空白行)

        #sed /^$/d;G test.txt(每行间只保留一个空白行)

        #sed n;d test.txt(只显示奇数行)

        #sed -n 1!G;h;$p test.txt

     b.awk

4、写一个脚本,生成10个随机数,并按从小到大进行排序(要求至少使用2中方法);

5、在每周二的凌晨1点5分执行脚本/data/get_username.sh,并将脚本的输出至/tmp/get_username.log日志文件中;

6、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;

7、写一个脚本,打印9X9乘法表;

    方法一:   

       #!/bin/bash

        for ((a=1;a<=9;a++));do

         for ((b=1;b<=a;b++));do

         echo -e -n "${b}X$a=$[$a*$b]\t"

         done

         echo

        done

    

8、描述dns的工作流程,以及完整搭建一套dns主从服务器,相关域名和ip可自行设定。



        

    

你可能感兴趣的:(运维,sed,实战练习)