linux运维实战练习案例-2016年2月3日(第二次)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux运维实战练习案例-2016年2月3日(第二次)相关的知识,希望对你有一定的参考价值。

一、实战案例(练习)内容

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

第一步:POST(加电自检)

POST:Power On Self Test 加电自检指计算机系统接通电源,是Bios功能的一个主要部分,包括对CPU、系统主板、基本内存、扩展内存、系统ROM BIOS等器件的测试。如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速启动。

第二步:启动BOIS,加载BIOS中的BootSequence(设备加载次序)

启动BIOS的设置界面,然后根据按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备

第三步:根据BootSequence找到第一个具有Bootloader(MBR)的设备

找到操作系统所在的磁盘分区,把内核从操作系统所在的磁盘分区中加载到内存中。内核加载完成后,还可以把控制权转交给内核。

第四步:加载kernel(ramdisk)

探测可识别到的所有硬件设备;加载硬件驱动程序;以只读方式挂载根文件系统;运行用户空间的第一个应用程序:/sbin/init

第五步:装载rootfs(只读)

装载根文件系统

第六步:启动init程序

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

(1) 设置主机名;

(2) 设置欢迎信息;

(3) 激活udev和selinux; 

(4) 挂载/etc/fstab文件中定义的文件系统;

(5) 检测根文件系统,并以读写方式重新挂载根文件系统;

(6) 设置系统时钟;

(7) 激活swap设备;

(8) 根据/etc/sysctl.conf文件设置内核参数;

(9) 激活lvm及software raid设备;

(10) 加载额外设备的驱动程序;

(11) 清理操作;

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

sed用法:

sed [option]...  ‘script‘  inputfile...  

script:  

‘地址命令‘

 

  常用选项:

-n:不输出模式空间中的内容至屏幕;

-e: 多点编辑;

-f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本;

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

-i: 原处编辑;(将文件修改后,将修改后的内容保存到文件中。谨慎使用!!!)

 

  地址定界:

(1) 不给地址:对全文中的每一行都进行处理;

(2) 单地址:

#: 指定第#行;

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

(3) 地址范围:

#,#:开始行,结束行

#,+#:开始行,追加的行数

/pat1/,/pat2/

#,/pat1/

(4) ~:步进

1~2

2~2

 

编辑命令: 

d: 删除

p: 显示模式空间中的内容

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

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

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

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

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

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

!: 取反条件; 

&:后向引用

s///:支持使用其它分隔符, [email protected]@@ ,s###;  #s/要查找的内容/替换后的内容/

替换标记:

g: 行内全局替换;

p: 显示替换成功的行;

w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;

注意:g,p,w放置在 s///的最后面,如: s///g

 

1.[[email protected] ~]#sed ‘1,8d‘ /etc/fstab  

#删除fstab中的第一行到第8行

技术分享

 

2.[[email protected] ~]# sed ‘/^UUID/a \abcdef \n123456‘  /etc/fstab  

#在匹配到的行后面追加两行内容 abcdef 和 123456

技术分享



3.[[email protected] ~]# sed ‘/^UUID/i \abcdef \n123456‘  /etc/fstab  

#在匹配到的行前面添加两行内容 abcdef 和 123456


 技术分享

4.[[email protected] ~]# sed ‘/^UUID/c \abcdef \n123456‘  /etc/fstab  

#将匹配到的替换为指定的两行内容 abcdef 和 123456

技术分享

 

5.[[email protected] ~]# sed ‘/^UUID/w /etc/fstab-test.txt‘  /etc/fstab  

#将从/etc/fstab中匹配到的行存入到 /etc/fstab-test.txt中

技术分享

技术分享


 

6.[[email protected] ~]# sed ‘/^UUID/=‘  /etc/fstab  

#为匹配到的行打印出行号 

技术分享

7.[[email protected] ~]# sed ‘6r /etc/crontab‘ /etc/fstab  

#读取/etc/issue文件中的内容插入到 /etc/fstab(模式空间中)中的第6行后面(不改变原文件) 

技术分享

技术分享

 

8.[[email protected] ~]# sed ‘/^UUID/!d‘  /etc/fstab  

#删除/etc/fstab文件中没有被UUID匹配到的行

技术分享

 

9.[[email protected] ~]# sed ‘s/^UUID/uuid/‘  /etc/fstab  

 #将/etc/fstab中行首为UUID的字符串更改为uuid

技术分享

 

awk用法:

awk是报告生成器,用来格式化文本输出。

基本用法:gawk [options] ‘program‘ FILE ...

program: PATTERN{ACTION STATEMENTS}

语句之间用分号分隔

 

子命令:print,printf

选项:

-F:指明输入时用到的字段分隔符;(缺省时,以空白作为分隔符)

-v var=value: 自定义变量;

1、print

print item1, item2, ...

要点:

(1) 逗号分隔符;

(2) 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式;

(3) 如省略item,相当于print $0; 

 

示例:

技术分享

 

2、变量

2.1 内建变量

FS:input field seperator(输入时的字段分隔符),默认为空白字符;

OFS:output field seperator(输出时的字段分隔符),默认为空白字符;

RS:input record seperator,输入时进行分割的换行符;

ORS:output record seperator,输出时分割显示的换行符;

NF:number of field,字段数量(统计每行的字段数)

{print NF}, {print $NF}

NR:number of record, 行数; 文件的总行数,也可以显示单个文件的行号

FNR:各文件分别计数;行数;

FILENAME:当前文件名;

ARGC:命令行中参数的个数;

ARGV:是数组,保存的是命令行所给定的各参数;

 

示例:以冒号为分隔符对字符串进行分割,并显示第一字段

技术分享

 

 

 

3、printf命令

 

格式化输出:printf FORMAT, item1, item2, ...

 

(1) FORMAT必须给出; 

(2) 不会自动换行,需要显式给出换行控制符,\n  (newline)

(3) FORMAT中需要分别为后面的每个item指定一个格式化符号;

 

格式符:

%c: 显示字符的ASCII码;

%d, %i: 显示十进制整数;

%e, %E: 科学计数法数值显示;

%f:显示为浮点数;

%g, %G:以科学计数法或浮点形式显示数值;

%s:显示字符串;

%u:无符号整数;

%%: 显示%自身;

 

修饰符:(用来修饰格式符)

#[.#]:第一个数字控制字符串显示的长度;第二个#表示小数点后的精度;

%3.1f  (右对齐)

-: 左对齐

+:显示数值的符号

示例:

 技术分享

 

示例:

技术分享

 

4、操作符

 

算术操作符:

x+y, x-y, x*y, x/y, x^y, x%y

-x:转化为负数

+x: 转换为数值;

 

字符串操作符:没有符号的操作符,字符串连接

 

赋值操作符:

=, +=, -=, *=, /=, %=, ^=

++, --

 

比较操作符:

>, >=, <, <=, !=, ==

 

模式匹配符:

~:是否匹配

!~:是否不匹配

 

逻辑操作符:

&&

||

!

 

函数调用:

function_name(argu1, argu2, ...)

 

条件表达式:

selector?if-true-expression:if-false-expression

示例:

技术分享

 

5、PATTERN

 

(1) empty:空模式,匹配每一行;

(2) /regular expression/:仅处理能够被此处的模式匹配到的行;

(3) relational expression: 关系表达式;结果有“真”有“假”;结果为“真”才会被处理;

真:结果为非0值,非空字符串;

以上是关于linux运维实战练习案例-2016年2月3日(第二次)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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