1、描述centos6系统开机启动流程;
1)加载 BIOS 的硬件信息与进行自我测试,并依据配置取得第一个可启动的装置;
2)读取并运行第一个启动装置内 MBR 的 boot Loader ( grub, spfdisk 等程序);
3)依据 boot loader 的配置加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;
4)在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 等级;
5)init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境 (如网络、时区等);
6)init 运行 run-level 下的各个服务使之启动 (script 方式);
7)init 运行 /etc/rc.d/rc.local 文件;
8)init 运行终端机模拟程序 mingetty 来启动 login 程序,最后就等待使用者登陆;
2、描述/etc/rc.d/rc.sysinit脚本功能;
1)取得网络环境与主机信息:
读取网络配置档 /etc/sysconfig/network ,取得主机名称与默认网关等网络环境。
2)测试与挂载内存装置 /proc 及 U盘 装置 /sys:
除挂载内存装置 /proc 之外,还会主动侦测系统上是否具有 usb 的装置, 若有则会主动加载 usb的驱动程序,并且尝试挂载 usb 的文件系统。
3)决定是否启动 SELinux :
4)启动系统的随机数产生器
5)配置终端字体:
6)配置显示於启动过程中的欢迎信息;
7)配置系统时间 (clock) 与时区配置:需读入 /etc/sysconfig/clock 配置值
8)周边设备的侦测与 Plug and Play (PnP) 参数的测试:
根据核心在启动时侦测的结果 (/proc/sys/kernel/modprobe ) 开始进行 ide / scsi / 网络 / 音效 等周边设备的侦测,以及利用以加载的核心模块进行 PnP 装置的参数测试。
9)使用者自定义模块的加载
使用者可以在 /etc/sysconfig/modules/*.modules 加入自定义的模块,则此时会被加载到系统当中
10)加载核心的相关配置:
系统会主动去读取 /etc/sysctl.conf 这个文件的配置值。
11)配置主机名称与初始化电源管理模块 (ACPI)
12)初始化软件磁盘阵列:主要是透过 /etc/mdadm.conf 来配置好的。
13)初始化 LVM 的文件系统功能
14)以 fsck 检验磁碟文件系统:会进行 filesystem check
15)进行磁碟配额 quota 的转换 (非必要):
16)重新以可读写模式挂载系统磁碟:
17)启动 quota 功能:所以我们不需要自订 quotaon 的动作
18)启动系统虚拟随机数产生器 (pseudo-random):
19)清除启动过程当中的缓存文件:
20)将启动相关资讯加载 /var/log/dmesg 文件中。
3、总结文本处理工具sed及awk的用法;(必须附带示例)
1)sed
逐行处理文本并将处理后的文本标准输出,但并不改变原文本内容。
①sed使用格式及选项
[root@a ~]# [OPTION] 'n1,n2]fun' [input-file]
OPTION
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN
的数据一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过
sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的
sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是由萤幕输出。
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作
是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
fun
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除,因为是删除,所以 d 后面通常不接任何字符串;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!
例如 1,20s/old/new/g 就是啦!
②实例
[root@a ~]# cat sed //被编辑的文件 1 2 3 4 [root@a ~]# sed '3ad' sed //在指定范围后添加字符串 1 2 3 d 4 [root@a ~]# sed '3d' sed //删除指定范围的行 1 2 4 [root@a ~]# sed '2,3cno' sed //替换指定范围的行为no 1 no 4 [root@a ~]# sed '3iok' sed //在第3行前插入ok 1 2 ok 3 4 [root@a ~]# sed -n '2,3p' sed //在静默下输出选择的文本 2 3 [root@a ~]# sed '1,4s/3/ok/g' sed //将3替换成ok 1 2 ok 4
4、写一个脚本,生成10个随机数,并按从小到大进行排序(要求至少使用2中方法);
5、在每周二的凌晨1点5分执行脚本/data/get_username.sh,并将脚本的输出至/tmp/get_username.log日志文件中;
6、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;
7、写一个脚本,打印9X9乘法表;
8、描述dns的工作流程,以及完整搭建一套dns主从服务器,相关域名和ip可自行设定。