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
方法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
#########################################################
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
#########################################################
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
#########################################################
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.";
};