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 &>> /tmp/get_username.log
chmod 750 /data/get_username.sh
crontab -e
5 1 * * 2 /data/get_username.sh
#########################################################
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
way2
#########################################################
8、描述dns的工作流程,以及完整搭建一套dns主从服务器,相关域名和ip可自行设定。