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

1.1加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备;

1.2读取并执行第一个启动设备内MBR的boot Loader(即是grub,spfdisk等程序);

1.3依据bootloader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序;

1.4在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level信息;

1.5init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络,时区等);

1.6init执行run-level的各个服务的启动(script方式);  

1.7init执行/etc/rc.d/rc.local文件;

1.8init执行终端机模拟程序mingetty来启动login进程,最后就等待用户登录。

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

2.1  取得网络环境与主机类型:

读取网络配置文件/etc/sysconfig/network ,取得主机名与默认网关(gateway) 等网络环境。

2.2测试与挂载内存装置 /proc 及 USB 装置 /sys:

除挂载内存装置 /proc之外,还会主动侦测系统上是否具有 usb 的装置, 若有则会主动加载 usb 的驱劢程序,并且尝试挂载 usb 的文件系统。

2.3决定是否启动SELinux :

并且检测是否需要帮所有的档案重新编写标准的 SELinux 类型 (auto relabel)。

2.4启动系统的随机数生成器

随机数生成器可以帮劣系统迚行一些密码加密演算的功能,在此需要启动两次随机数生成器。

2.5设定终端机 (console) 字形:

2.6设定显示于开机过程中的欢迎画面 (textbanner);

2.7.设定系统时间(clock) 与时区设定:需读入 /etc/sysconfig/clock 设定值

2.8.接口设备的侦测Plug and Play (PnP) 参数的测试:

根据核心在开机时侦测的结果 (/proc/sys/kernel/modprobe ) 开始进行 ide /scsi / 网络 / 音效 等接口设备的侦测,以及利用以加载的核心模块进行 PnP 装置的参数测试。

2.9.用户自定义模块的加载

使用者可以在 /etc/sysconfig/modules/*.modules 加入自定义的模块,则此时会被加载到系统当中

2.10.加载核心的相关设定:

 系统会主动去读取 /etc/sysctl.conf 这个档案的设定值,使核心功能成为我们想要的样子。

2.11.设定主机名与初始化电源管理模块 (ACPI)

2.12.初始化软件磁盘阵列:

主要是透过 /etc/mdadm.conf 来设定好的。

2.13.初始化 LVM 的文件系统功能

2.14.以 fsck 检验磁盘文件系统:会迚行 filesystem check

2.15.进行磁盘配额 quota 的转换 (非必要):

2.16.重新以可擦写模式挂载系统磁盘:

2.17.启动 quota 功能:所以我们不需要自定义 quotaon 的动作

2.18.启动系统虚拟随机数生成器(pseudo-random):

2.19.清除开机过程当中的临时文件:

2.20.将开机相关信息加载/var/log/dmesg 档案中。

 

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

脚本一:

#!/bin/bash

#Program:

#       RANDOM 10 integer and sort from min tomax ,then print them!

#History:

#       2016/01/25 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

declare-i min

declare-i max

declare-i i

declare-a arrayRAN

i=1

 echo "The 10 Random integer are: "

arrayRAN[i]=$RANDOM

min=${arrayRAN[i]}

max=${arrayRAN[i]}

while[ $i -le 10 ]

do   

       echo ${arrayRAN[i]}

         if[ ${arrayRAN[i]} -lt $min ];then

                 min=${arrayRAN[i]}

        elif [ ${arrayRAN[i]} -gt $max ];then

                 max=${arrayRAN[i]}

        fi

       i=i+1

       arrayRAN[i]=$RANDOM

done

echo"The Min Random integer is:" $min

echo"The Max Random integer is:" $max

运行结果一:

wKiom1a1h3rzkpxRAABQ1LP9BLg036.jpg

脚本二:

#!/bin/bash

#Program:

#       RANDOM 10 integer and sort from min tomax ,then print them!

#History:

#       2016/01/27 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

declare-i min

declare-i max

declare-i i

declare-i m

echo"The 10 Random integer are: "

m=$RANDOM

min=$m

max=$m

echo$m

for((i=2; i<=10; i++))

do

        m=$RANDOM

        echo $m

        if [ $m -lt $min ];then

                 min=$m

        elif [ $m -gt $max ];then

                 max=$m

        fi

done

echo"The Min Random integer is:" $min

echo"The Max Random integer is:" $max

运行结果二:

wKioL1a1h9DRkulBAABPMFH3IiM499.jpg

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

4.1启用周期服务crond

wKioL1a1jGCgJdEQAAFog3sxIoc405.jpg

4.2测试脚本

wKiom1a1jAyCgp94AACSMPOpPF8997.jpg

4.3  本题的脚本

wKioL1a1jGGRvMUGAABNGJXhAPY437.jpg

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

脚本:                                                          

#!/bin/bash

#Program:

#      Test the file directory is exists ornot.And test the file's filetype.

#History:

#       2016/01/27 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

read-p "Please input a file directory,I will check the directory's type." fd

test-z $fd && echo "You MUST input a file directory." &&exit 0

if[ -f "$fd" ];then

       echo "The $fd is exists"

       test -b $fd &&filetype="block file"

       test -c $fd &&filetype="character file"

       test -f $fd && filetype="regularefile"

       test -h $fd &&filetype="symbolic link"

       test -p $fd &&filetype="named pipe"

       test -S $fd &&filetype="socket file"

  echo "The filename: $fd is a$filetype"

else

       mkdir $fd

       echo "Creat the directory $fdsucceed"

fi

结果截图:

wKiom1a1jK_gLJWzAAG7z7WgJs4930.jpg


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

脚本:

#!/bin/bash

#Program:

#      Print Nine Nine Multiplication Table

#History:

#       2016/01/27 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

declare-i i

declare-i m

for((i=1;i<=9;i++))

do  

       m=1

       while [ $m -le $i ]

       do

              echo -e -n  "${m}x${i}=$[$i*$m] \t"

              m=m+1

       done

       echo

done

结果截图:

wKioL1a1jTyCXK-JAAEQ9fmeL9Y542.jpg