马哥教育网络班19期+第7周课程练习

1.创建一个10G分区,并格式为ext4文件系统:

  (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;

  (2)挂载至/data/mydata目录,要求挂载时禁止程序自行运行,且不更新文件的访问时间戳;

  fdisk /dev/sdb

03c041c0-46e0-441a-8f0c-ce096bb39f6f.jpg

   partx -a /dev/sdb1

   mkfs.ext4 -b 2048 -m 2 -L "MYDATA" /dev/sdb1

   vim /etc/fstab

/dev/sdb1               /data/mydata                  ext4    rw,suid,dev,noexec,auto,nouser,async,noatime    0 0

2.创建一个大小为1G的swap分区,并创建好文件系统,并启用之;

   fdisk /dev/sdb

 83d53d1f-d26a-4cbf-934f-01294a491264.jpg

  partx -a /dev/sdb2

  mkswap -L "myswap" /dev/sdb2

  swapon /dev/sdb2

3.写一个脚本

  (1)获取并列出当前系统上的所有磁盘设备;

  (2)显示每个磁盘设备上每个分区相关的空间使用信息;

#!/bin/bash

#

echo "all disk as follows :"

fdisk -l |egrep '^Disk[[:space:]]+/dev/' |awk '{print $2}' |awk -F: '{print $1}'

echo "————————"

echo "partions space has used:"

for disk in $(fdisk -l |egrep '^Disk[[:space:]]+/dev/' |awk '{print $2}' |awk -F: '{print $1}');do

        for part in $(fdisk -l $disk |grep '^/dev/'|awk '{print $1}');do

                echo "$part partion used:$(df -h $part| awk '/\/dev\//{print $5}')"

        done

done

4.总结RAID的各个级别机器组合方式和性能的不同:

raid0:条带卷;至少2块盘,读、写性能提升,无冗错能力,空间:N*min(S1,S2,…)

raid1:镜像卷;至少2块盘,读性能提升、写性能下降,有冗错能力,空间:1*min(S1,S2,…)

raid4:奇偶校验的独立磁盘结构;存储校验码的硬盘是单独的盘,其余和raid5基本类似

raid5:分布式奇偶校验的独立磁盘结构;至少3块盘,读、写性能提升,有冗余能力,空间:(N-1)*min(S1,S2,…)

raid6:两种存储的奇偶校验码的磁盘结构;至少4块盘,读写性能提升,有容错能力,空间:(N-2)*min(S1,S2,…)

raid10:先做raid1,再做raid0;读写性能提升,至少4块盘,有容错能力,空间:N*min(S1,S2,…)/2

JBOD:将多块磁盘的空间合并一个大的连续空间使用,空间:sum(S1,S2,…)

5.创建一个大小为10G的raid1,要求有一个空闲盘,而且chunk大小为128K;

 mdadm -C /dev/md0 -n 2 -x 1 -c 128 -l 1 /dev/sdb3 /dev/sdc1 /dev/sdc2

6.创建一个大小为4G的raid5设备,chunk大小为256K,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;

mdadm -C /dev/md0 -n 3 -l 5 -c 256 /dev/sdb3 /dev/sdc1 /dev/sdc2 

mkfs.ext4 /dev/md0 

vim /etc/fstab

    /dev/md/localhost.localdomain:0   /backup  ext4    rw,acl,noatime  0 0

7.写一个脚本:

  (1)接受一个以上文件路径作为参数

  (2)显示每个文件拥有的行数

  (3)总结说明本次公文几个文件统计了其行数

#!/bin/bash

#

read  -p  "please input the file path:" -a line

echo "================================="

if [ ${#line[@]} -lt 1 ];then

   echo "please input file path like:/path/to/file"

else

   for i in $(seq 0 $[${#line[*]}-1]);do

      if [ -f ${line[$i]} ];then

         echo "${line[$i]} lines is:$(cat ${line[$i]} |wc -l)"

      else

        echo "please input a file path like:/etc/path/to/file"

        exit 1

      fi

   done

echo "file number:${#line[@]}"

fi

8.写一个脚本:

  (1)传递两个以上的字符串当做用户名

  (2)创建这些用户名,且密码同用户名

  (3)总结说明共创建了几个用户

#!/bin/bash

#

declare -i sum=0

read -p "please more than one strings:" -a user

if [ ${#user[@]} -lt 1 ];then

   echo "please input strings like:string1 string1 …"

   exit 1

else

   for i in $( seq 0 $[${#user[*]}-1]);do

       if id ${user[$i]} &>/dev/null ;then

          echo "${user[$i]} is exist!please input agin!"

       elif [[ ! ${user[$i]} =~ [[:alpha:]]+ ]];then           –>想匹配为大小写字母及数字,但是user$此类还是可以添加成功

          echo "please input correct string"

       else

          useradd ${user[$i]}&&echo "${user[$i]}" |passwd –stdin ${user[$i]} &>/dev/null &&echo "${user[$i]} add success"&&let sum++

       fi

    done

fi

echo "sum of new adduser:$sum"

9.写一个脚本,新建20个用户,visitor1-visitor20,计算他们的ID之和;

#!/bin/bash

#

declare -i sum=0

for i in {1..20};do

    useradd visitor${i}&&echo "add success"

    let sum+=$(id user1|cut -d" " -f1 |sed -r  's/\(.*\)//g;s/uid=//g')

done

echo "userid sum:$sum"  

10.写一个脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#开头的行数之和,以及总的空白行数

#!/bin/bash

#

echo "At the beginning of the line # ,rc.sysinit:$(cat /etc/rc.d/rc.sysinit |egrep '^#' |wc -l)"

echo "Blank row ,rc.sysinit:i$(cat /etc/rc.d/rc.sysinit |egrep '^$' |wc -l)"

echo 

echo "At the beginning of the line # ,functions:$(cat /etc/rc.d/init.d/functions |egrep '^#' |wc -l)"

echo "Blank row ,functions:i$(cat /etc/rc.d/init.d/functions |egrep '^$' |wc -l)"

echo

echo "At the beginning of the line # ,/etc/fstab:$(cat /etc/fstab |egrep '^#' |wc -l)"

echo "Blank row ,/etc/fstab:i$(cat /etc/fstab |egrep '^$' |wc -l)"

11.写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和

#!/bin/bash

#

echo "/bin/bash user==>uname uid:"

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

echo "sum of uid:$(awk -F: 'BEDIN{sum=0}$NF=="/bin/bash"{sum=sum+$3}END{print sum}' /etc/passwd)"

12.写一个脚本,显示当前系统上所有拥有附加组的用户的用户名,并说明共有多少个此类用户

#!/bin/bash

#

User=($(awk -F: '{print $1}' /etc/passwd))

for i in $(seq 0 $[${#User[@]}-1]);do

    if [ $(id ${User[$i]} |cut -d" " -f3 |awk -F"," '{print NF}') -gt 1 ];then

        echo "user who have supp-group:${User[$i]}"

        let sum++

    fi

done

echo "sum,user who have supplementary group:$sum"

13.创建一个有至少两个物理卷组成的大小为20G的卷组,要求:PE大小为8M;

在卷组中创建一个大小为5G的逻辑卷mylv1,格式户为ext4文件系统,开机自动挂载至/users目录,支持acl;

分区:

fdisk /dev/sdb

fdisk /dev/sdc

分别创建/dev/sdb3、/dev/sdc1分区;分区类型设置8e;partx -a /dev/sdb3、partx -a /dev/sdc1重读硬盘分区表信息

lvm创建:

(1)pvcreate /dev/sdb3 /deb/sdbc1

(2)vgcteate -s 8M myvg /deb/sdb3 /deb/sdc1

(3)lvcreate -L 5G -n mylv1 myvg

(4)mkfs.ext4 /dev/mapper/myvg-mylv1

(5)mkdir /users

(6)vim /etc/fstab –>添加一条内容:/dev/mapper/myvg-mylv1  /users   ext4    rw,acl,auto     0 0

(7)

14.新建用户magedu,其家目录为/users/magedu,而后su切换至此用户,赋值多个文件至家目录;

useradd -m -k /etc/skel -d /users/magedu magedu;su -l magedu ;cp -a /etc/pam.d /users/magedu

15.扩展mylv1至9G,确保扩展后原有数据可用;

lvextend -L 9G /dev/mapper/myvg-mylv1 ; resize2fs /dev/mapper/myvg-mylv1 ;df -h

16.缩减mylv1至7G,确保扩展后原有数据可用;

umount /dev/mapper/myvg-mylv1

e2fsck -f /dev/mapper/myvg-mylv1

resize2fs /dev/mapper/myvg-mylv1 7G

lvreduce -L 7G /dev/mapper/myvg-mylv1

mount /dev/mapper/myvg-mylv1 /users/

17.对mylv1创建快照,并通过备份数据,要求保留原有的属主属组等信息;

lvcreate -s -p r -L 1G -n mylv1-snapshot /dev/mapper/myvg-mylv1

mount /dev/mapper/myvg-mylv1 /mnt

文件系统备份:

tar -Jcvpf /tmp/mylv1_$(date +%Y-%m-%d-%T).tat.xz /mnt/

块的备份:

dd if=/dev/mapper/myvg-mylv1–snapshot of=/tmp/myvg-mylv1–snapshot.dd

删除快照:

lvremove /dev/mapper/myvg-mylv1–snapshot

原创文章,作者:snow,如若转载,请注明出处:http://www.178linux.com/19368

(0)
上一篇 2016-06-22 11:47
下一篇 2016-06-22 15:35

相关推荐

  • 马哥教育网络班21期-第七周课程练习

    第七周作业 1、创建一个10G分区,并格式为ext4文件系统; [root@qq ~]# fdisk /dev/sdb         #使用fdisk命令进行分区; Device contains neither&nb…

    Linux干货 2016-08-08
  • N26第二周博客作业

    1、  Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常见的文件查看命令有:cat,tac,head,tail,more,less,stat,touch 常见的文件管理命令有:cp,mv,rm 常见的目录管理命令:mkdir,rmdir 以下进行详细介绍: 1.1  文件查看命令 l  ca…

    Linux干货 2017-02-03
  • keepalived双主模型的实现

    一、简介  keepalived 简介:是服务器高可用的一个重要软件,它的核心组件有vrrp ,stack, checker ,ipvs, warpper, watch dog  它是vrrp协议的实现,原生设计目的为高可用ipvs服务;keepalived能够通过配置文件中定义生成ipvs规则 并能够对RS的健康状态进行检测;vrrp_…

    Linux干货 2016-08-30
  • iptables基础详解

    一.iptables基础认知二.iptables使用格式  一.iptables简介   1.Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。如果 Linux 系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器, 则Iptables有利于在 …

    2017-05-03
  • N25第九周博客作业

    1、 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/sh lg=0 nlg=0 while read line;do   if [[ “${line}” =~“/sbin/nol…

    Linux干货 2017-03-06
  • 打造自己小小的RPM包

    关于源码RPM包的安装于制作 什么是RPM与SRPM? 1     RPM: 1     SRPM: 2     SRPM的安装 2 一 .利用rpmbuild默认安装SRPM档案 2 二.配置路径与需要的软件功能模块 3  &n…

    Linux干货 2016-08-24

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 14:20

    写的很棒,有的脚本是不是可以在优化一下那?