linux运维初学作业,linux运维实战练习-2016年1月19日-2月3日课程作业

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

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

2)读取并运行第一个启动装置内 MBR 的 boot Loader ( grub, spfdisk

等程序);

3)依据 boot loader 的配置加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;

4)在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 等级;

5)init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境

(如网络、时区等);

6)init 运行 run-level 下的各个服务使之启动 (script 方式);

7)init 运行 /etc/rc.d/rc.local 文件;

8)init 运行终端机模拟程序 mingetty 来启动 login

程序,最后就等待使用者登陆;

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

1)取得网络环境与主机信息:

读取网络配置档 /etc/sysconfig/network ,取得主机名称与默认网关等网络环境。

2)测试与挂载内存装置 /proc 及 U盘 装置 /sys:

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

3)决定是否启动 SELinux :

4)启动系统的随机数产生器

5)配置终端字体:

6)配置显示於启动过程中的欢迎信息;

7)配置系统时间 (clock) 与时区配置:需读入 /etc/sysconfig/clock 配置值

8)周边设备的侦测与 Plug and Play (PnP) 参数的测试:

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

9)使用者自定义模块的加载

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

10)加载核心的相关配置:

系统会主动去读取 /etc/sysctl.conf 这个文件的配置值。

11)配置主机名称与初始化电源管理模块 (ACPI)

12)初始化软件磁盘阵列:主要是透过 /etc/mdadm.conf 来配置好的。

13)初始化 LVM 的文件系统功能

14)以 fsck 检验磁碟文件系统:会进行 filesystem check

15)进行磁碟配额 quota 的转换 (非必要):

16)重新以可读写模式挂载系统磁碟:

17)启动 quota 功能:所以我们不需要自订 quotaon 的动作

18)启动系统虚拟随机数产生器 (pseudo-random):

19)清除启动过程当中的缓存文件:

20)将启动相关资讯加载 /var/log/dmesg 文件中。

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

1)sed

逐行处理文本并将处理后的文本标准输出,但并不改变原文本内容。

①sed使用格式及选项

[root@a ~]# [OPTION] 'n1,n2]fun' [input-file]

OPTION

-n  :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN

的数据一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过

sed 特殊处理的那一行(或者动作)才会被列出来。

-e  :直接在命令列模式上进行 sed 的动作编辑;

-f  :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的

sed 动作;

-r  :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

-i  :直接修改读取的文件内容,而不是由萤幕输出。

n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作

是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

fun

[root@a ~]# cat sed   //被编辑的文件

1

2

3

4

a   :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

[root@a ~]# sed '3ad' sed    //在指定范围后添加字符串

1

2

3

d

4

c   :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行

[root@a ~]# sed '2,3cno' sed  //替换指定范围的行为no

1

no

4

d   :删除,因为是删除,所以 d 后面通常不接任何字符串;

[root@a ~]# sed '3d' sed  //删除指定范围的行

1

2

4

i   :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

[root@a ~]# sed '3iok' sed  //在第3行前插入ok

1

2

ok

3

4

p   :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

[root@a ~]# sed -n '2,3p' sed     //在静默下输出选择的文本

2

3

s   :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!

例如 1,20s/old/new/g 就是啦!

[root@a ~]# sed '1,4s/3/ok/g' sed   //将3替换成ok

1

2

ok

4

2)awk

逐行处理文本,默认以空格分隔字段并按指定要求标准输出。

①awk使用格式

[hi@a ~]$awk [options] 'PATTERN { action }' file1 file2, ...

②awk之print

print输出字段,以$n,指定字段;[root@a ~]# cat awk

drwxr-xr-x. 2 hi hi 6 Jan 26 23:18 Desktop

drwxr-xr-x. 2 hi hi 6 Jan 26 23:18 Documents

drwxr-xr-x. 2 hi hi 6 Jan 26 23:18 Downloads

drwxr-xr-x. 2 hi hi 6 Jan 26 23:18 Music

[root@a ~]# awk '{print $1 $9}' awk

drwxr-xr-x.Desktop

drwxr-xr-x.Documents

drwxr-xr-x.Downloads

drwxr-xr-x.Music

③awk之内置变量

BEGIN:从文件的第一行开始;

END{}:处理文本完成后的动作;[root@a ~]# awk '{print $1 "\t"$9}END{print"done"}' awk

drwxr-xr-x.     Desktop

drwxr-xr-x.     Documents

drwxr-xr-x.     Downloads

drwxr-xr-x.     Music

done

FS 字段分隔符(默认是任何空格)。[root@a ~]# cat awk1

q.w.e.r.t.y

a.s.d.f.g.h

z.x.c.v.b.b

[root@a ~]# awk 'BEGIN {FS="."}{print $1 $3}' awk1

qe

ad

zc

NF 表示字段数,在执行过程中对应于当前的字段数。[root@a ~]# awk '{print "line" NR "\t" NF }' awk

line1   9

line2   9

line3   9

line4   9

NR 表示记录数,在执行过程中对应于当前的行号。[root@a ~]# awk '{print "line" NR "\t" $1 $9}' awk

line1   drwxr-xr-x.Desktop

line2   drwxr-xr-x.Documents

line3   drwxr-xr-x.Downloads

line4   drwxr-xr-x.Music

OFS 输出字段分隔符(默认值是一个空格)。[root@a ~]# awk 'BEGIN {OFS="--"} {print $1 $9}' awk

drwxr-xr-x.--Desktop

drwxr-xr-x.--Documents

drwxr-xr-x.--Downloads

drwxr-xr-x.--Music

RS 记录分隔符(默认是一个换行符)。[root@a ~]# cat awk2

a s d.f g h.j k l.

[root@a ~]# awk 'BEGIN {RS="."}{print}' awk2

a s d

f g h

j k l

ORS 输出记录分隔符(默认值是一个换行符)。[root@a ~]# awk 'BEGIN{RS="."} {ORS="\n\n"}{print}' awk2

a s d

f g h

j k l

④awk之逻辑运算符[root@a ~]#             awk '{FS=":"} $3 

root:x:0:0:root:/root:/bin/bash

bin      1

daemon   2

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

##生成随机数

int=0

while(($int<10))

do

arr[$int]=$RANDOM

let "int++"

done

##冒泡排序法

#for (( i=0 ; i

#do

#  for (( j=${#arr[@]} - 1 ; j>i ; j-- ))

#  do

#    #echo $j

#    if  [[ ${arr[j]} -lt ${arr[j-1]} ]]

#    then

#       t=${arr[j]}

#       arr[j]=${arr[j-1]}

#       arr[j-1]=$t

#    fi

#  done

#done

##快速排序算法

temp=

buff=

#交换函数

swap()

{

buff=${arr[$1]}

arr[$1]=${arr[$2]}

arr[$2]=$buff

}

fun()

{

i=$(($1-1))

j=$1

temp=${arr[$2]}

if test $1 -ge $2 ;then

return 2

fi

while [ $j -le $2 ];do

[ $j -lt $2 ] && while [[ ${arr[$j]} -gt $temp ]] ;do

j=$(($j+1))

done

i=$(($i+1))

swap $i $j

j=$(($j+1))

done

}

##打印输出排序结果

echo ${arr[*]}

5、在每周二的凌晨1点5分执行脚本/data/get_username.sh,并将脚本的输出至/tmp/get_username.log日志文件中;[root@a ~]# crontab -e

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

[root@a ~]# crontab -l

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

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

path="/j"

if [ ! -d "${path}" ];then

mkdir "${path}"

fi

if [ -d "$path" ];then

ls $path

fi

7、写一个脚本,打印9X9乘法表;#!/bin/bash

for((i=1;${i}<=9;i++))

do

for((j=1;${j}<=${i};j++))

do

echo -e "${i}X${j}=$((i*j))\t\c"

done

echo -e "\n"

done

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

DNS工作流程

接到客户端请求www.a.com,先查询本机DNS缓存,若有则返回结果;若无则查询本机DNS解析库,若有则返回结果;若无则查询DNS root,获取顶级域,然后查询顶级域,获取www.a.com结果返回给客户端。

用bind搭建DNS主从服务器[root@a ~]# yum install bind  //主从安装bind

[root@a ~]# vim /etc/named.conf  //主从注释或关闭

31 #        dnssec-enable yes;

32 #        dnssec-validation yes;

//主服务器配置

[root@a named]# vi /etc/named.rfc1912.zones  //添加

zone "a.cn" IN {

type master;

file "a.cn.zone"; ## 存储文件名,放在 /var/named ##

allow-update { none; };

allow-transfer {10.0.0.2; }; ## 允许辅域名服务器进行传输 ##

};

[root@a named]# vi /var/named/a.cn.zone

$TTL 144444

@       IN SOA     ns.a.cn. m.a.com. (

20160127

1D

1H

1W

3H )

IN NS      ns.a.cn.

ns      IN A       10.0.0.1

www     IN A       10.0.0.1

//从服务器配置

[root@a named]# vi /etc/named.rfc1912.zones //添加

zone "1.16.172.in-addr.arpa" IN {

type slave; ## 该主机被定义为辅域名服务器 ##

file "a.cn.zone"; ## 这个文件会被自动创建 ##

allow-update { none; };

allow-transfer {10.0.0.1 };  ## 定义主域名服务器 ##

masters {10.0.0.1; };

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值