inux运维实战练习-2016年1月19日-2月3日课程作业

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

inux运维实战练习-2016年1月19日-2月3日课程作业_第1张图片

方法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 &>> /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

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

way2

wKioL1afyomDsl5hAABIdUDGPb8600.png



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

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

你可能感兴趣的:(作业)