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行,意思就是显示奇数行)
#sed -n ‘2~2p’ test.txt(从第二行开始显示,每次增加2行,意思就是显示偶数行)
编辑命令:
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
练习3:echo一个绝对路径给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可自行设定。