马哥Linux网络班作业

Posted

tags:

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

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

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

答:

[[email protected] ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xf2e3118b 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n                #新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf2e3118b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[[email protected] ~]# lsblk                                   #查看分区是已写入
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   120G  0 disk
├─sda1            8:1    0   500M  0 part /boot
└─sda2            8:2    0 119.5G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0     2G  0 lvm  [SWAP]
  └─centos-home 253:2    0  67.5G  0 lvm  /home
sdb               8:16   0    20G  0 disk
└─sdb1            8:17   0    10G  0 part                    #刚才新建的10G的分区
sr0              11:0    1   7.2G  0 rom
[[email protected] ~]# mke2fs -t ext4 -b 2048 -m 2 -L "MYDATA" /dev/sdb1   #将分区格式化为ext4格式,指明大小,预留百分比及卷标
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=MYDATA
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=273678336
320 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,
        2048000, 3981312

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[[email protected] ~]# tune2fs -o acl /dev/sdb1        #设置默认挂在属性
tune2fs 1.42.9 (28-Dec-2013)

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

答:

[[email protected] /]# mkdir -p /data/mydata    #创建需要挂载的目录
[[email protected] /]# mount -o noexec,nodiratime /dev/sdb1 /data/mydata/    ####挂载/dev/sdb1到/data/mydata目录下,noexec表示禁止程序自动运行,nodiratime不更新文件的访问时间戳
[[email protected] /]# mount     #使用mount命令查看挂载后的结果
.....
/dev/sdb1 on /data/mydata type ext4 (rw,noexec,nodiratime,relatime,seclabel,data=ordered)


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

答:

[[email protected] /]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):t            #改变分区的系统id
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):82        #82代表swap分区类型
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[[email protected] /]# lsblk            #这时候查看分区并没有看到我们新添加的1G的swap分区
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   120G  0 disk
├─sda1            8:1    0   500M  0 part /boot
└─sda2            8:2    0 119.5G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0     2G  0 lvm  [SWAP]
  └─centos-home 253:2    0  67.5G  0 lvm  /home
sdb               8:16   0    20G  0 disk
└─sdb1            8:17   0    10G  0 part /data/mydata
sr0              11:0    1   7.2G  0 rom
[[email protected] /]# part
parted     partprobe  partx
[[email protected] /]# part
parted     partprobe  partx
[[email protected] /]# partx -a /dev/sdb        #重新读取磁盘分区表
partx: /dev/sdb: error adding partition 1
[[email protected] /]# partx -a /dev/sdb        
partx: /dev/sdb: error adding partitions 1-2
[[email protected] /]# lsblk                    
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   120G  0 disk
├─sda1            8:1    0   500M  0 part /boot
└─sda2            8:2    0 119.5G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0     2G  0 lvm  [SWAP]
  └─centos-home 253:2    0  67.5G  0 lvm  /home
sdb               8:16   0    20G  0 disk
├─sdb1            8:17   0    10G  0 part /data/mydata
└─sdb2            8:18   0     1G  0 part                    #再次查看可以看到
sr0              11:0    1   7.2G  0 rom
[[email protected] /]# fdisk -l /dev/sdb

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf2e3118b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    23070719     1048576   82  Linux swap / Solaris       #可以看到sdb2就是swap类型的分区
[[email protected] /]# mkswap /dev/sdb2           #创建swap文件系统
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=29f135ba-4ac1-42aa-a978-2bc04c587a65
[[email protected] /]# swapon /dev/sdb2            #启用swap

3、写一个脚本

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

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

答:

[[email protected] bin]# vim disktest.sh
#!/bin/bash

echo "All of disk as follows:"

fdisk -l | grep "^磁盘[[:space:]]/dev/[sh]d[a-z]" | cut -d‘ ‘ -f2 | cut -d: -f1  ##这里记得正则表达式中^的含义哦,在[^]表示意思相反,在^[]表示定位在行首.我的系统装的是中文版的,所以这里用了中文的"磁盘",如果是英文版的要用"Disk";这一行显示的是系统中每块硬盘的大小

echo ‘‘                                         #这里加个空白行,为了更加清晰的显示,我看很多脚本都这么写的
echo "All of partitions as follows:"            #每块硬盘分区的详细信息
for i in $(fdisk -l | grep "^/dev/[sh]d[a-z][1-9][0-9]\{0,\}" | cut -d‘ ‘ -f1);do   #cut命令很强大,都是我查资料弄的
        echo "$i partition‘s information:"
        df -h $i
done
##脚本执行结果:
[[email protected] bin]# bash disktest.sh
All of disk as follows:
/dev/sdb:53.7
/dev/sda:128.8

All of partitions as follows:
/dev/sdb1 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb2 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb3 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb4 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb5 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb6 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb7 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sdb8 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
/dev/sda1 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1       497M  125M  373M   26% /boot
/dev/sda2 partition‘s information:
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        479M     0  479M    0% /dev
[[email protected] bin]#

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

技术分享

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

答:

[[email protected] ~]# fdisk /dev/sdb        #建立连个10G的raid盘
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+10G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf2e3118b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   fd  Linux raid autodetect
/dev/sdb2        20973568    41943039    10484736   fd  Linux raid autodetect

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[[email protected] ~]# partprobe /dev/sdb        #重新读取分区
[[email protected] ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   120G  0 disk
├─sda1            8:1    0   500M  0 part /boot
└─sda2            8:2    0 119.5G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0     2G  0 lvm  [SWAP]
  └─centos-home 253:2    0  67.5G  0 lvm  /home
sdb               8:16   0    50G  0 disk
├─sdb1            8:17   0    10G  0 part
├─sdb2            8:18   0    10G  0 part
└─sdb3            8:19   0    10G  0 part        #注意我这里在分区的时候少分了一个空闲盘,所以sdb3是后来分的前面没有写出来
sr0              11:0    1   7.2G  0 rom
[[email protected] ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -l 1 -c 128 /dev/sdb{1,2,3}
mdadm: /dev/sdb1 appears to contain an ext2fs file system
       size=10485760K  mtime=Tue Sep 20 15:07:55 2016
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store ‘/boot‘ on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
## 说明一下 -C:建立RAID的选项; -a(yes|no):是否自动创建目标rai设备的设备文件; -n:使用多少个硬盘来创建此raid; -x:指明空闲盘的个数; -l:指明raid的级别; -c: 指明CHUNK大小
[[email protected] ~]# mdadm --detail /dev/md0                #查看md0的详细信息
/dev/md0:                                                       #RAID名
        Version : 1.2                    
  Creation Time : Tue Sep 20 18:32:41 2016                      #建立RAID的时间
     Raid Level : raid1                                         #RAID的等级
     Array Size : 10476544 (9.99 GiB 10.73 GB)                  #整个RAID的可用容量
  Used Dev Size : 10476544 (9.99 GiB 10.73 GB)                  #每个硬盘的容量
   Raid Devices : 2                                             #组成RAID的硬盘数量
  Total Devices : 3                                             #包括空闲硬盘的硬盘数量
    Persistence : Superblock is persistent

    Update Time : Tue Sep 20 18:33:33 2016
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : mageeduCentos7.2:0  (local to host mageeduCentos7.2)
           UUID : cdf346ca:c8575fed:9c904829:d5bbb927
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2

       2       8       19        -      spare   /dev/sdb3
[[email protected] ~]#

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

答:

[[email protected] ~]# mdadm -C /dev/md1 -a yes -n3 -l 5 -c 256 -x 1 /dev/sdb{5,6,7,8}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[[email protected] ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Tue Sep 20 19:28:04 2016
     Raid Level : raid5
     Array Size : 8380416 (7.99 GiB 8.58 GB)
  Used Dev Size : 4190208 (4.00 GiB 4.29 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Sep 20 19:28:25 2016
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 256K

           Name : mageeduCentos7.2:1  (local to host mageeduCentos7.2)
           UUID : efd19c25:ec5bf8e9:f4d1ee13:55a282fb
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       4       8       23        2      active sync   /dev/sdb7

       3       8       24        -      spare   /dev/sdb8
[[email protected] ~]# mke2fs -t ext4 /dev/md1   ##格式化为ext4文件类型
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=64 blocks, Stripe width=128 blocks
524288 inodes, 2095104 blocks
104755 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2145386496
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[[email protected] ~]# tune2fs -o acl /dev/md1        ## 设置acl属性
tune2fs 1.42.9 (28-Dec-2013)
[[email protected] ~]# blkid /dev/md1        ##查看md1的uuid号,写入/etc/fstab中
/dev/md1: UUID="d64ecac9-5c32-4f1a-9f8d-be229c1aa4c1" TYPE="ext4"
[[email protected] ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Aug 10 14:44:03 2016
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=e93341c0-4e34-47df-8110-f52f1346e118 /boot                   xfs     defaults        0 0
#UUID=6c500166-5b1d-40f3-84fc-2957f6828a99 /srv/raid    xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults,usrquota,prjquota        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=d64ecac9-5c32-4f1a-9f8d-be229c1aa4c1  /data/mydata   ext4  defaults,acl,nodiratime 0 0

技术分享

7、写一个脚本

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

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

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

答:

[[email protected] bin]# vim mg7z7t.sh
#!/bin/bash

num=0

line=0

if [ $# -eq 0 ];then
        echo "please input filename"
fi

for i in $*;do
        line=$(wc -l $i | cut -d‘ ‘ -f1)
        let num=$num+1
        echo "file $i lines is $line"
done

echo files num is $num
[[email protected] bin]# bash mg7z7t.sh /etc/fstab /etc/sysconfig/network-scripts/ifcfg-eno16777736
file /etc/fstab lines is 14
file /etc/sysconfig/network-scripts/ifcfg-eno16777736 lines is 18
files num is 2

8、写一个脚本

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

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

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

答:

[[email protected] bin]# vim mg7z8t.sh
#!/bin/bash

count=0
if [ $# -ge 2 ];then
        for i in [email protected];do
                if id $i &> /dev/null;then
                        echo "$i exists,please try another name."
                else
                        useradd $i &> /dev/null && echo "$i" | passwd --stdin $i &> /dev/null
                        let count++
                        echo "$i is added"
                fi
        done
else
        echo "At lease need two agrument!"
        exit 1
fi

echo "added $count users"
[[email protected] bin]# bash mg7z8t.sh mgjy1 mgjy2
mgjy1 is added
mgjy2 is added
added 2 users
[[email protected] bin]# tail -n 2 /etc/passwd
mgjy1:x:1005:1005::/home/mgjy1:/bin/bash
mgjy2:x:1006:1006::/home/mgjy2:/bin/bash

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

答:

[[email protected] bin]# vim mg7z9t.sh
#!/bin/bash
for i in {1..20};do
        useradd visitor$i
        echo "visitor$i is added"
        value=$(cat /etc/passwd | grep "^visitor$i" | cut -d: -f3)
        sum=$(($sum+$value))
done

echo "All the ID is $sum"
[[email protected] bin]# bash mg7z9t.sh
visitor1 is added
visitor2 is added
visitor3 is added
visitor4 is added
visitor5 is added
visitor6 is added
visitor7 is added
visitor8 is added
visitor9 is added
visitor10 is added
visitor11 is added
visitor12 is added
visitor13 is added
visitor14 is added
visitor15 is added
visitor16 is added
visitor17 is added
visitor18 is added
visitor19 is added
visitor20 is added
All the ID is 20330
[[email protected] bin]# tail -n 20 /etc/passwd | cut -d: -f1,3      #之和对不对,自己算啊哈哈哈
visitor1:1007
visitor2:1008
visitor3:1009
visitor4:1010
visitor5:1011
visitor6:1012
visitor7:1013
visitor8:1014
visitor9:1015
visitor10:1016
visitor11:1017
visitor12:1018
visitor13:1019
visitor14:1020
visitor15:1021
visitor16:1022
visitor17:1023
visitor18:1024
visitor19:1025
visitor20:1026

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

答:

[[email protected] bin]# vim mg7z10t.sh
#!/bin/bash
for i in [email protected];do
        if [ -f $i ];then
                line=$(grep ‘^#‘ $i | wc -l)
                echo "$i begin with #‘s line:$line"
                spaceLine=$(grep ‘^$‘ $i | wc -l)
                spaceSum=$(($spaceSum+$spaceLine))
        else
                echo "You should input a file."
                exit 1
        fi
done

echo "spaceLine:$spaceSum"
[[email protected] bin]# bash mg7z10t.sh /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab
/etc/rc.d/rc.sysinit begin with #‘s line:44
/etc/rc.d/init.d/functions begin with #‘s line:43
/etc/fstab begin with #‘s line:7
spaceLine:206

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

答:

[[email protected] bin]# vim mg7z11t.sh
#!/bin/bash

for i in $(grep ‘/bin/bash$‘ /etc/passwd);do
        userName=$(echo $i | cut -d: -f1)
        userUid=$(echo $i | cut -d: -f3)
        sumUid=$(($sumUid+$userUid))
        echo "username:$userName"
        echo "UID:$userUid"
done
echo "Sum of the UID:$sumUid"
[[email protected] bin]# bash mg7z11t.sh
username:root
UID:0
username:myquota1
UID:1000
username:myquota2
UID:1001
username:myquota3
UID:1002
username:myquota4
UID:1003
username:myquota5
UID:1004
username:mgjy1
UID:1005
username:mgjy2
UID:1006
username:visitor1
UID:1007
username:visitor2
UID:1008
username:visitor3
UID:1009
username:visitor4
UID:1010
username:visitor5
UID:1011
username:visitor6
UID:1012
username:visitor7
UID:1013
username:visitor8
UID:1014
username:visitor9
UID:1015
username:visitor10
UID:1016
username:visitor11
UID:1017
username:visitor12
UID:1018
username:visitor13
UID:1019
username:visitor14
UID:1020
username:visitor15
UID:1021
username:visitor16
UID:1022
username:visitor17
UID:1023
username:visitor18
UID:1024
username:visitor19
UID:1025
username:visitor20
UID:1026
Sum of the UID:27351

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

答:

[[email protected] bin]# vim mg7z12t.sh
#!/bin/bash
for i in $(cut -d: -f1 /etc/passwd);do
        id $i | cut -d‘ ‘ -f3 | grep ‘,‘ &> /dev/null
        if [ $? -eq 0 ];then
                echo $i
                let sum++
        fi
done

echo "totail:$sum"
[[email protected] bin]# bash mg7z12t.sh
postfix
totail:1

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

答:

[[email protected] ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x678c114d

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   8e  Linux LVM
/dev/sdb2        20973568    41945087    10485760   8e  Linux LVM
[[email protected] ~]# pvcreate /dev/sdb1 /dev/sdb2        #将两个10G的卷组成卷组
WARNING: dos signature detected on /dev/sdb1 at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
[[email protected] ~]# vgcreate -s 8m myvg /dev/sdb1 /dev/sdb2   #设置卷组的pe大小为8m
  Volume group "myvg" successfully created
[[email protected] ~]# lvcreate -L 5G -n mylv1 myvg        #创建5G的逻辑卷
  Logical volume "mylv1" created.
[[email protected] ~]# mkfs.ext4 /dev/myvg/mylv1        #格式化逻辑卷myly1为ext4文件系统
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[[email protected] ~]# blkid /dev/myvg/mylv1
/dev/myvg/mylv1: UUID="b8f0046d-be05-40e0-aad0-e3eb229ff577" TYPE="ext4"  #得到UUID后用vim命令编辑/etc/fstab文件,把属性写进去
[[email protected] ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Aug 10 14:44:03 2016
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=e93341c0-4e34-47df-8110-f52f1346e118 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=b8f0046d-be05-40e0-aad0-e3eb229ff577  /users       ext4    defaults,acl 0 0
[[email protected] ~]# vgdisplay
....系统默认的略过....
--- Volume group ---
  VG Name               myvg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.98 GiB        #卷组的大小
  PE Size               8.00 MiB         #PE的大小
  Total PE              2558
  Alloc PE / Size       640 / 5.00 GiB
  Free  PE / Size       1918 / 14.98 GiB
  VG UUID               O2fCjR-C5UP-t1qu-KZA1-V56h-kCfd-f9CTr4

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

答:

[[email protected] /]# useradd -d /users/magedu magedu
[[email protected] /]# su magedu
[[email protected] /]$ cp /etc/fstab /etc/issue ~
[[email protected] /]$ pwd
/
[[email protected] /]$ cd
[[email protected] ~]$ ls
fstab  issue

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

答:

[[email protected] ~]# lvextend -L 9G /dev/myvg/mylv1
  Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
  Logical volume mylv1 successfully resized.
[[email protected] ~]# resize2fs /dev/myvg/mylv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 2359296 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long.

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

答:

[[email protected] ~]# umount /users/
[[email protected] ~]# e2fsck -f /dev/myvg/mylv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/myvg/mylv1: 11/589824 files (0.0% non-contiguous), 75551/2359296 blocks
[[email protected] ~]# resize2fs /dev/myvg/mylv1 7G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 1835008 blocks long.

[[email protected] ~]# lvreduce -L 7G /dev/myvg/mylv1
  WARNING: Reducing active logical volume to 7.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv1? [y/n]: y
  Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
  Logical volume mylv1 successfully resized.
[[email protected] ~]# mount /dev/myvg/mylv1 /users/

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

答:

[[email protected] ~]# lvcreate -s -L 1G -p r -n snap-mylv1 /dev/myvg/mylv1
  Logical volume "snap-mylv1" created.
  ##-s:表示快照功能的意思
[[email protected] ~]# cd /dev/myvg/
[[email protected] myvg]# ll
总用量 0
lrwxrwxrwx. 1 root root 7 9月  21 17:09 mylv1 -> ../dm-3
lrwxrwxrwx. 1 root root 7 9月  21 17:09 snap-mylv1 -> ../dm-6


以上是关于马哥Linux网络班作业的主要内容,如果未能解决你的问题,请参考以下文章

马哥Linux网络班作业

马哥Linux网络班作业

马哥Linux网络班作业

马哥linux第三周作业---基本班

马哥教育网络班+第二周课程练习

PK1119-马哥2016 linux 就业班&架构班视频