Linux基础第七周作业

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础第七周作业相关的知识,希望对你有一定的参考价值。


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

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

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

fdisk /dev/sdb
n  新建分区
p 主分区
1 主分区号
+10G 分区大小10G
w 保存并退出

创建文件系统:

mke2fs –t ext4 –b 2048 –m 2 –L MYDATA

mke2fs [-cFMqrSvV][-b <区块大小>][-f <不连续区段大小>][-i <字节>][-N <inode数>][-l <文件>][-L <标签>][-m <百分比值>][-R=<区块数>][ 设备名称][区块数]

-b<区块大小> 指定区块大小,单位为字节

-c 检查是否有损坏的区块。

-f<不连续区段大小> 指定不连续区段的大小,单位为字节

-F 不管指定的设备为何,强制执行mke2fs

-i<字节> 指定"字节/inode"的比例。

-N<inode> 指定要建立的inode数目。

-L<标签> 设置文件系统的标签名称。

-m<百分比值> 指定给管理员保留区块的比例,预设为5%

-M 记录最后一次挂入的目录。

-q 执行时不显示任何信息。

-t 指定创建文件系统类型

-r 指定要建立的ext2文件系统版本。

-R=<区块数> 设置磁盘阵列参数。

-S 仅写入superblockgroup descriptors,而不更改inode able inode bitmap以及block bitmap

-v 执行时显示详细信息。

-V 显示版本信息。

挂载:

mkdir –p /data/mydata/
mount –o noexec –o nodiratime –o acl /dev/sdb1 /data/mydata


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

fdisk  /dev/sdb
n 
p
2
+1G
t        调整磁盘类型
82       swap磁盘类型
w


mkswap /dev/sdb2  #设置交换分区
swapon /dev/sdb2  #启用交换分区
free –m          #查看当前交换空间

可以写入/etc/fstab,在引导时启用

/dev/sdb2 swap swap defaults 0 0


 3、写一个脚本

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

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

#!/bin/bash
#Description :list all disks device
Version:0.1
disk=$(fdisk -l | grep "Disk /dev/[sh]d" | cut -d: -f1)
echo -e   "total:\t $disk"
disused=$(fdisk -l | grep "/dev/sd[a-z][1-9]"| awk ‘{print $1}‘| df -h)
echo  -e "used: \t $disused"


4、总结RAID的各个级别及其组合方式和性能的不同;

RAID0    数据切分存在两块盘,读写性能提升,空间每块硬盘直接叠加,无容错能力,最少需要2块盘组合。增加需要2的倍数。

RAID1    数据写时每块硬盘各保存一份,写性能下降,读取性能提升,空间减半,有容错能力,一块坏,不影响另一块使用,最少2块盘,增加需要2的倍数。

RAID5    分布式奇偶校验独立磁盘结构,数据交叉存储,读写性能提升,空间磁盘数量N-1,有容错能力,只能坏1块盘,最少需要3块磁盘组合。

RAID10    先进行raid1,再做raid0,具有两者特性,读写性能提升,有容错能力,磁盘利用率50%。

RAID01    少用。

 

5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;

添加3块10G的磁盘sdb,sdc,sdd

mdadm -C /dev/md1 -n3 -l 1 –c 128 -x1  /dev/sd{b,c,d}


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

mdadm -C /dev/md5 -n3 -l 5 -c 256 
mke2fs -t ext4 /dev/md5
mkdir /backup/ 
mount -o acl,nodiratime /dev/md5 /backup/

编辑/etc/fstab文件

加上:

/dev/md5 /backup/ ext4 defaults 0 0


7、写一个脚本

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

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

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

#!/bin/bash
if [[ $# -eq 0 ]]; then
    echo -e "\nusage: sh $0 <FILE...>\n"
    exit 1else
    for i in "[email protected]"; do
        echo ‘lines:’`wc -l ${i}`
    done
    echo "Total number of files: $#"fi


8、写一个脚本

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

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

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

#!/bin/bash
#Version:v0.1
Num_user=0if [[ $# -le 1 ]]; then
    echo -e "\nusage: sh $0 <arg1> <arg2>..."
    echo -e "Pls enter at least two strings.\n"
    exit 1else
    for i in "[email protected]"; do
        useradd ${i} &>/dev/null
        if [[ $? -eq 0 ]]; then
            let Num_user+=1
            echo "${i}" | passwd --stdin ${i} &>/dev/null
        fi
    done
    echo "The number of users created: ${Num_user}"
    echo -e "User lists:"
    echo "$*" | sed -r ‘s/[[:space:]]+/\n/g‘fi

脚本运行结果:

[[email protected] scripts]# sh adduser.sh lanin1 lanin2 lanin3
The number of users created: 3
User lists:
lanin1
lanin2
lanin3


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

#!/bin/bash
#Description :
#Version:0.1
SUM=0
for i in visitor{1..20};do
    useradd $i
    let SUM+=`id -u $i`
done
echo "the sum of uid: $SUM"

脚本运行结果:

[[email protected] scripts]# sh -x userid.sh 
+ SUM=0
+ for i in ‘visitor{1..20}‘
+ useradd visitor1
++ id -u visitor1
+ let SUM+=504
... ...
+ for i in ‘visitor{1..20}‘
+ useradd visitor20
++ id -u visitor20
+ let SUM+=523
+ echo ‘the sum of uid: 10270‘
the sum of uid: 10270


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

grep ‘^#‘ /etc/rc.d/rc.sysinit |wc -l  以#号开头的行
grep ‘^$‘ /etc/rc.d/rc.sysinit |wc -l  空白行
#!/bin/bash
#v0.1
#
declare -a array=(  ‘/etc/rc.d/rc.sysinit‘  ‘/etc/rc.d/init.d/functions‘  ‘/etc/fstab‘  )
for i in {0..2};do
    echo "the number of ${array[$i]} # first: `grep ‘^#‘ ${array[$i]} |wc -l`"
    echo "the number of ${array[$i]} blank : `grep ‘^$‘ ${array[$i]} |wc -l`"
done

脚本运行结果: 

[[email protected] scripts]# sh statistic_line.sh 
the number of /etc/rc.d/rc.sysinit # first: 44
the number of /etc/rc.d/rc.sysinit blank : 100
the number of /etc/rc.d/init.d/functions # first: 43
the number of /etc/rc.d/init.d/functions blank : 105
the number of /etc/fstab # first: 7
the number of /etc/fstab blank : 1


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

grep  ‘/bash$’ /etc/passwd |cut -d: -f1,3
grep ‘/bash$’/etc/passwd |awk -F‘{print $1,$3}’
[[email protected] scripts]# grep ‘/bash$‘ /etc/passwd|awk -F: ‘BEGIN{sum=0}{sum=sum+$3;print $1,$3}END{print sum}‘
root 0
lanin 500
lanin1 501
lanin2 502
lanin3 503
2006


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

#!/bin/bash
#v0.1
Sum_user=0
echo "attach group list:"
while read line; do
    User_name=$(echo ${line} | cut -d: -f1)
    Num=$(id -G ${User_name} | wc -w)
    if [[ ${Num} -eq 2 ]]; then
          echo "${User_name}"
          let Sum_user+=1
    fi
done < /etc/passwd
echo "The number of user: ${Sum_user}"

脚本运行结果:

[[email protected] scripts]# sh  attach_group.sh
attach group list:
adm
postfix
The number of user: 2


13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;

[[email protected] ~]# pvcreate /dev/sdb /dev/sdc 物理卷
[[email protected] ~]# vgcreate -s 8M myvg /dev/sd{b,c} 卷组
[[email protected] ~]# lvcreate -L 5G -n mylv1 /dev/myvg 逻辑卷
[[email protected] ~]# mkfs.ext4 /dev/myvg/mylv1 格式化为ext4
[[email protected] ~]# echo "/dev/myvg/mylv1    /users   ext4  defaults,acl,nodiratime  0 0"  >> /etc/fstab 开机自动挂载

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

[[email protected] scripts]# mkdir /users/
[[email protected] scripts]# useradd magedu -d /users/magedu
[[email protected] scripts]# su - magedu
[[email protected] ~]$ cp -R /etc/rc.d/rc3.d/ ~
[[email protected] ~]$ ls
rc3.d


15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;

[[email protected] ~]# cp /etc/fstab ./
[[email protected] ~]# lvextend -L +4G -n /dev/myvg/mylv1
[[email protected] ~]# resize2fs /dev/myvg/mylv1


16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;

[[email protected] ~]# umount /users
[[email protected] ~]# e2fsck -f /dev/myvg/mylv1
[[email protected] ~]# resize2fs /dev/myvg/mylv1 7G
[[email protected] ~]# lvreduce -L 7G -n /dev/myvg/mylv1


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

[[email protected] ~]# lvcreate -L 3G -p r -s -n mylv1_bak /dev/myvg/mylv1


本文出自 “11460225” 博客,请务必保留此出处http://11470225.blog.51cto.com/11460225/1854216

以上是关于Linux基础第七周作业的主要内容,如果未能解决你的问题,请参考以下文章

第七周作业

20169217 《Linux内核原理与分析》第七周作业

Linux内核分析第七周作业

马哥linux第七周作业

马哥Linux第七周课程作业

第七周作业Linux微职位