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

BIOS加电---主引导记录(grub stage1)---stage2 -- 加载/boot 内核初始化 vmlinuz和内存盘

--只读方式挂载根,根切换---系统初始化Upstart 并发加载服务

#########################################################

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

selinu;打印欢迎信息;初始化硬件;激活udev;加载模块;内核参数配置;设置主机名、软RAID检查;磁盘配额检查;重新挂载根为读写方式;环境清理;激活swap


#########################################################

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

sed

//:表达式定址
n:默认不输出
p:打印

示例:

#打印包含TEM的行

sed -ne '/TEM/p' gc.txt

H:追加到保持空间
D:多行删除
$:最后一行
!:取反
g:从保持空间覆盖模式空间
s:/被替换/替换/
示例:
#删除所有换行符
sed 'H;$!D;g;s/\n//g'


awk

awk '/正则表达式/{过程}' 输入文件

$0 整行  $1 第一个字段  $NF  最后1个字段

[root@rhel7 ~]# awk -F: '{print $7,$8,$9}' passwd|cat -e|tail -3
/sbin/nologin  $
/sbin/nologin  $
/sbin/nologin  $


BEGIN块,处理前执行,多用于初始化
END块,处理完后执行,多用于总结


变量运算 += -= x++  ++x ...

[root@rhel7 ~]# wc -l passwd              
21 passwd
[root@rhel7 ~]# awk '{print ++x}' passwd|tail -1
21
[root@rhel7 ~]# awk '{print x++}' passwd|tail -1 
20
[root@rhel7 ~]#


[root@rhel7 ~]# cat bb
3 6 9
2 2 11
3 4 7
over
[root@rhel7 ~]# awk '/[[:digit:]]/{avg=($1+$2+$3)/3;print $0,"\tavg: "avg}' bb
3 6 9   avg: 6
2 2 11  avg: 5
3 4 7   avg: 4.66667


打印print

示例:

#计算某些文件的总共大小

ls -l  *.cpp *.c *.h | awk '{sum+=$5} END {print sum}'


判断  == !=  &&


查看netstat输出的文件
awk '$3==0 && $6=="LISTEN" ' netstat.txt


关系表达式:真才处理(结果非0为真,非空字符串为真)

awk -F: '$NF=="/bin/bash" {print$1,$NF}' /etc/passwd


内建变量  FS
[root@rhel7 ~]# cat cc
aa cc heheeh
bb cc dddd
ee cc asdfasfdafsd
[root@rhel7 ~]# awk -v FS="cc"  '{print$2}' cc
 heheeh
 dddd
 asdfasfdafsd


#########################################################

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

方法一

#!/bin/bash
allnum=""
for ((i=1;i<=10;i++));do
r[$i]=$RANDOM
echo -e "随机数$i:\t${r[$i]}"
  allnum="${allnum} ${r[$i]}"
done
echo '=====排序后===='
echo $allnum | sed 's/ /\n/g' | sort -n

wKiom1afdF-iIA3qAAA8TG16VaI786.png

方法2

#!/bin/bash
for ((i=1;i<=10;i++));do
r[$i]=$RANDOM
echo -e "随机数$i:\t${r[$i]}"
done
lun(){
for ((i=1;i<=9;i++));do
if [ $[${r[i]}-${r[i+1]}] -gt 0 ];then
    temp=${r[i+1]}
    r[i+1]=${r[i]}
    r[i]=$temp
fi
done
}
for ((j=1;j<=9;j++));do
lun
done
echo "----排序后----"
for ((i=1;i<=10;i++));do
echo "${r[$i]}"
done

wKioL1afdJzBW7KxAABCAfdmiZo729.png

#########################################################

5、在每周二的凌晨1点5分执行脚本/data/get_username.sh

并将脚本的输出至/tmp/get_username.log日志文件中;

mkdir /data    2>/dev/null

cd /data


vim get_username.sh


#!/bin/bash

/usr/bin/whoami


chmod 750 /data/get_username.sh


crontab -e

5 1 * * 2 /data/get_username.sh &>> /tmp/get_username.log


#########################################################

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

#!/bin/bash
if ls $1 &> /dev/null ;then
stat $1|head -2
else  mkdir -p $1
fi

wKioL1afkrLBqJwFAABWuQWzC-U134.png


#########################################################

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


#!/bin/bash
for i in `seq 9`;do
  for j in `seq $i`;do
    echo -n -e "$j*$i=$[$i*$j]\t"
  done
  echo
done


wKiom1afb2WDSGCdAAA8t-PGsS0634.png




#########################################################

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


层次命名系统,层次结构用.分隔

资源记录(RR)的集合,这些资源记录名称公用名称结尾,且表示整个子树

顶级域(TLD),仅有一个组成部分的域,比如.com

子域

作为另一个域的子树的域,讨论2域关系时用此术语

区域

区域是指特定名称服务器(直接负责或对其具有权威)的某个域的组成部分

正向区域、反向区域


SOA

$TTL 86400

@ IN  SOA       ns1.vm.    admin.vm {

                                   2016012001  ; 修改后增加版本号

                                   5H   ;从检查更新的频率

                                   5M  ;失败重试间隔

                                   5D   ;刷新失败继续服务时间

                                   15H  ;解析器缓存“记录不存在”信息的时长

)

#############################################################

yum install bind bind-utils
systemctl enable bind
#修改配置文件
listen-on port 53 { any; };
allow-query     { any; };
dnssec-enable no;
dnssec-validation no;

zone "zang.net." IN {
        type master;
        file "zang.net.zone";
};

zone "168.192.in-addr.arpa." {
        type master;
        file "168.192.arpa";
};
#/var/named/zang.net.zone
$ttl 1d
@               in      soa     ns1.zang.net.  admin.zang.net.(
2016012903  5h 5m 5d 15h)
                in      ns      ns1.zang.net.
                in      ns      ns2.zang.net.
                in      mx 10   mail1.zang.net.
                in      mx 20   mail2.zang.net.
ns1             in      a       192.168.7.71
ns2             in      a       192.168.7.60
mail1           in      a       192.168.7.71
mail2           in      a       192.168.7.60
www             in      a       192.168.7.10
                in      a       192.168.7.20
ftp             in      a       192.168.7.30


#/var/named/168.192.arpa
$ttl 1d
@               in      soa     ns1.zang.net.  admin.zang.net.(
2016012903  1h 5m 1w 10m)
                in      ns      ns1.zang.net.
                in      ns      ns2.zang.net.
71.7            in      ptr     ns1.zang.net.
60.7            in      ptr     ns2.zang.net.
71.7            in      ptr     mail1.zang.net.
60.7            in      ptr     mail2.zang.net.

#执行命令检查
named-checkconf
named-checkzone  "zang.net."  /var/named/zang.net
named-checkzone  "168.192.in-addr.arpa."  /var/named/zang.net

systemctl start named
#从服务器
listen-on port 53 { any; };
allow-query     { any; };
//注释dnssec相关信息
zone "zang.net." IN {
        type slave;
        masters {192.168.7.71; };
        file "slaves/zang.net.";
};

zone "168.192.in-addr.arpa." {
        type slave;
        masters {192.168.7.71; };
        file "slaves/168.192.in-addr.arpa.";
};

wKioL1arpLLwk8zdAABKdxgvvmM182.png

wKiom1arpGmgrOwVAADDnnlIHGg757.png

wKiom1arpGnRxJP9AABVYbI8wi8014.png