首页 > 代码库 > 第七周作业

第七周作业

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

1. 创建一个10G的分区:
[root@localhost ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x67486aa6.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).
         
Command (m for help): n                     #创建新分区
Command action
   e   extended
   p   primary partition (1-4)               #创建一个主分区
Partition number (1-4): 1                    #起始柱面从1开始
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G #分配10G大小空间
Command (m for help): w                     #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重新读取硬盘分区表
[root@localhost ~]# partx -a /dev/sdb

3. 查看内核是否已经识别新的分区
[root@localhost ~]#  cat /proc/partitions  | grep sdb
   8       16   20971520 sdb
   8       17   10490413 sdb1
   
1)要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
命令:mke2fs:ext系列文件系统专用管理工具
语法:mke2fs [OPTIONS] /dev/sd… 默认为ext2文件系统
      -t: {ext2|ext3|ext4}:指明要创建的文件系统类型;
      -b: {1024|2048|4096}:指明块大小,默认为4K,最大不超过4K
      -L: ‘LABEL‘ :指明卷标
      -j: 创建有日志功能的文件系统ext3
          mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
      -i: 指明indoe与字节的比率;即每多少个字节创建一个inode;此大小不应该小于block的大小
      -N:直接指明要给此文件系统创建的inode的数量;
      -I: 一个inode记录大小128—4096
      -m: 默认5%,为管理人员指定预留空间占总空间的百分比
      -O: FEATURE[,…]:启用指定特性
      -O: ^FEATURE:关闭指定特性

1. 格式化文件系统  
[root@localhost ~]# mke2fs -b 2048 -m 2 -L MYDATA  /dev/sdb1 
mke2fs 1.41.12 (17-May-2010)
文件系统标签=MYDATA
操作系统:Linux
块大小=2048 (log=1)                                                        #块大小为2048
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
657408 inodes, 5245206 blocks
104904 blocks (2.00%) reserved for the super user                    #预留空间百分比为2%
第一个数据块=0
Maximum filesystem blocks=543162368
321 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
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


命令:tune2fs:查看或修改ext系列文件系统的某些属性;
语法:tune2fs [options] devicd
       -l:查看指定文件系统超级块信息;super block
       -L: ‘LABEL‘:修改卷标
       -m:调整预留给管理员的空间百分比
       -j: 将ext2升级为ext3
       -O: [^]FEATHER: 文件系统属性启用或禁用,–O has_journal|^has_journal
       -o: 开启或关闭文件系统的默认挂载选项,–o acl|^acl
       -U: UUID: 修改UUID号

2. 设定默认挂载选项为acl
[root@localhost ~]# tune2fs  -o acl  /dev/sdb1
tune2fs 1.41.12 (17-May-2010)

3. 查看挂载属性
[root@localhost ~]# tune2fs /dev/sdb1  -l | grep ‘Default mount options:‘
Default mount options:    acl

2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备
格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
        device:指明要挂载的设备;
                (1) 设备文件:例如/dev/sda5
                (2) 卷标:-L ‘LABEL‘, 例如 -L ‘MYDATA‘
                (3) UUID, -U ‘UUID‘:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘
                (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
        dir:挂载点
                    事先存在;建议使用空目录;
                    进程正在使用中的设备无法被卸载;
        常用命令选项:
                -t vsftype:指定要挂载的设备上的文件系统类型;
                    -r: readonly,只读挂载;
                    -w: read and write, 读写挂载;
                    -n: 不更新/etc/mtab; 
                    -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
                    -L ‘LABEL‘: 以卷标指定挂载设备;
                    -U ‘UUID‘: 以UUID指定要挂载的设备;
                    -B, --bind: 绑定目录到另一个目录上;
                    注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
                    -o options:(挂载文件系统的选项)
                                async:异步模式;
                                sync:同步模式;
                                atime/noatime:包含目录和文件;
                                diratime/nodiratime:目录的访问时间戳
                                auto/noauto:是否支持自动挂载
                                exec/noexec:是否支持将文件系统上应用程序运行为进程
                                dev/nodev:是否支持在此文件系统上使用设备文件;
                                suid/nosuid:
                                remount:重新挂载
                                ro:
                                rw:
                                user/nouser:是否允许普通用户挂载此设备
                                acl:启用此文件系统上的acl功能
                                注意:上述选项可多个同时使用,彼此使用逗号分隔;                    
                                默认挂载选项:defaults
                                  rw, suid, dev, exec, auto, nouser, and async

1. 挂载目录                                  
[root@localhost ~]# mount -o noexec,noatime  /dev/sdb1  /data/mydata/

2. 查看是否挂载成功
[root@localhost ~]# df -h
文件系统      容量  已用  可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
                      6.5G  738M  5.4G  12% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   30M  430M   7% /boot
/dev/sr0              4.1G  4.1G     0 100% /media
/dev/sdb1             9.9G   13M  9.7G   1% /data/mydata


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

1. 创建一个1G的分区
[root@localhost ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-2610, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +1G
Command (m for help): 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)
Syncing disks.

2. 通知内核重新读取硬盘分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   20971520 sdb
   8       17   10490413 sdb1
   8       18    1060290 sdb2
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
4. 格式化新的分区为swap
[root@localhost ~]# mkswap /dev/sdb2 
Setting up swapspace version 1, size = 1060284 KiB
no label, UUID=4d52d9ca-e321-4167-bc70-dc1b85b221de

5. 开启swap
查看现有swap大小
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           491        192        299          0         10         96
-/+ buffers/cache:         85        406
Swap:          991          0        991

开启swap
启用:swapon
格式:swapon [OPTION]... [DEVICE]
选项:
	-a:激活所有的交换分区;
	-p PRIORITY:指定优先级;
禁用:swapoff [OPTION]... [DEVICE]

开启
[root@localhost ~]# swapon /dev/sdb2      

查看
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           491        192        299          0         10         96
-/+ buffers/cache:         85        405
Swap:         2027          0       2027

6. 永久生效
[root@localhost ~]# vim /etc/fstab 
/dev/sdb2               swap                    swap    defaults        0 0


三、写一个脚本

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

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

[root@zabbix ~]# cat test.sh 
#!/bin/bash
disk=$(fdisk -l | grep  -o  ‘^Disk /dev/[a-z]d[a-z]‘|awk ‘{print $2}‘)
echo -e  "all disk as follows:\n${disk}\n"
echo -e ‘All the partition information as follows:‘
for i in `fdisk -l | grep    ‘^/dev/[a-z]d[a-z][1-9]‘ |awk ‘{print $1}‘`
do
    df -h $i | grep -C2 ‘^/dev/‘
done

[root@zabbix ~]# ./test.sh 
all disk as follows:
/dev/vda
/dev/vdb
/dev/vdc

All the partition information as follows:
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        48G   28G   17G  63% /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdb2       3.0G   69M  2.9G   3% /media
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdc1        99G  189M   94G   1% /var/mogdata


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

RAID-0:条带卷,strip;
    读、写性能提升;(IO速度最快)
    可用空间:N*min(S1,S2,...)
    无容错能力
    最少磁盘数:2, 2+(两个或两个以上)
    
RAID-1:  镜像卷,mirror;
    读性能提升、写性能略有下降;
    可用空间:1*min(S1,S2,...)
    有冗余能力(容错性最好)
     最少磁盘数:2, 2+
     
RAID-4:
    读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)
    有容错能力:最多坏1块磁盘
    最少磁盘数:3, 3+        
    
RAID-5:(性能与数据备份的综合考虑)
    读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)
    有容错能力:最多坏1块磁盘
    最少磁盘数:3, 3+
    
RAID-6:
    读、写性能提升
    可用空间:(N-2)*min(S1,S2,...)
    有容错能力:允许坏2块磁盘
    最少磁盘数:4, 4+            
          
RAID-10:
             读、写性能提升
    可用空间:N*min(S1,S2,...)/2
    有容错能力:每组镜像最多只能坏1块磁盘;
    最少磁盘数:4, 4+
    
RAID-01:
    读、写性能提升
    可用空间:N*min(S1,S2,...)/2
    有容错能力:最多坏1块
    最少磁盘数:4, 4+
    
RAID-50:
    RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0。
        读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)/2
    有容错能力:每组镜像最多只能坏1块磁盘;
    最少磁盘数:6,6+
    
JBOD:(Just a Bunch Of Disks)
    将多块磁盘的空间合并一个大的连续空间使用;
    可用空间:sum(S1,S2,...)


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

1. 创建分区
[root@localhost ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7e9c8894.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4568, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4568, default 4568): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-4568, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-4568, default 4568): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (2613-4568, default 2613): 
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-4568, default 4568): +10G

调整分区类型为fd 
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

查看分区
Command (m for help): p

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7e9c8894

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  fd  Linux raid autodetect
/dev/sdb2            1307        2612    10490445   fd  Linux raid autodetect
/dev/sdb3            2613        3918    10490445   fd  Linux raid autodetect

保存
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重读分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   36700160 sdb
   8       17   10490413 sdb1
   8       18   10490445 sdb2
   8       19   10490445 sdb3
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
4. 创建raid 1
mdadm:模式化的工具
格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10; 

	模式:
	    创建:-C
	    装配: -A
	    监控: -F
	    管理:-f, -r, -a


	-C: 创建模式
		     -n #: 使用#个块设备来创建此RAID;
		     -l #:指明要创建的RAID的级别;
		     -a {yes|no}:自动创建目标RAID设备的设备文件;
		     -c CHUNK_SIZE: 指明块大小;
		     -x #: 指明空闲盘的个数;

		     

	-D:显示raid的详细信息;
		      mdadm -D /dev/md#

	管理模式:
			    -f: 标记指定磁盘为损坏;
			    -a: 添加磁盘
			    -r: 移除磁盘

	观察md的状态:
			    cat /proc/mdstat

	停止md设备:
			    mdadm -S /dev/md#

创建			    
[root@localhost ~]# mdadm -C /dev/md0 -a yes -c 128 -n 2 -x 1 -l 1 /dev/sdb{1,2,3}
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=http://www.mamicode.com/0.90>


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

1. 创建分区
[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4568, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4568, default 4568): +4G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (524-4568, default 524): 
Using default value 524
Last cylinder, +cylinders or +size{K,M,G} (524-4568, default 4568): +4G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1047-4568, default 1047): 
Using default value 1047
Last cylinder, +cylinders or +size{K,M,G} (1047-4568, default 4568): +4G

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7e9c8894

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         523     4200966   fd  Linux raid autodetect
/dev/sdb2             524        1046     4200997+  fd  Linux raid autodetect
/dev/sdb3            1047        1569     4200997+  fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重读分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   36700160 sdb
   8       17    4200966 sdb1
   8       18    4200997 sdb2
   8       19    4200997 sdb3
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
 4. 创建raid 5
 [root@localhost ~]# mdadm -C /dev/md0 -a yes -c 256 -n 3 -l 5 /dev/sdb{1,2,3}
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid1 devices=2 ctime=Sun Sep 18 14:20:18 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

5. 查看 raid 5 信息
[root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Sun Sep 18 14:38:48 2016
     Raid Level : raid5
     Array Size : 8399360 (8.01 GiB 8.60 GB)
  Used Dev Size : 4199680 (4.01 GiB 4.30 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun Sep 18 14:40:00 2016
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 256K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 484a2c9b:8bfef9d1:55fcf0a7:bd10b14d
         Events : 20

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

6. 格式化文件系统
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=64 blocks, Stripe width=128 blocks
525200 inodes, 2099840 blocks
104992 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
65 block groups
32768 blocks per group, 32768 fragments per group
8080 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

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

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

7. 开机自动挂载
[root@localhost ~]# vim /etc/fstab 
/dev/md0                /backup                 ext4    acl,noatime     0 0

七、写一个脚本

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

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

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

#!/bin/bash
if [ $# -lt 2 ]
then
    echo "Please enter one or more parameters"  
    exit 1
fi

for i in  $@
do
    if [ -f $i 2> /dev/null ]
    then
        wc -l $i
    else
        echo ‘Please enter the file as a parameter...‘
	exit 1
    fi
done

echo "本次总计为了$#个文件统计了行数"

[root@localhost ~]# ./wc.sh /etc/passwd /etc/issue
19 /etc/passwd
3 /etc/issue
本次总计为了2个文件统计了行数



八、写一个脚本

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

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

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

[root@localhost ~]# cat user.sh 
#!/bin/bash
name_sum=0

for i in $@
do
    name=$i
    if [ ${#name} -gt 2 ]
    then
        echo ‘Account name meet the requirements‘
	useradd $i;echo $i |  passwd --stdin  $i;let name_sum+=1
    else
        echo ‘Account name does not meet the requirements‘
        exit 1
    fi
   
done

echo "本次共创建$name_sum个用户"


[root@localhost ~]# ./user.sh aa bbb cccc dddddd
Account name does not meet the requirements
Account name meet the requirements
更改用户 bbb 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
Account name meet the requirements
更改用户 cccc 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
Account name meet the requirements
更改用户 dddddd 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
本次共创建3个用户



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

[root@localhost ~]# cat id.sh 
#!/bin/bash
id_sum=0
for i in `seq 20`
do
    useradd visitor$i; echo "visitor$i" | passwd --stdin visitor$i
    let id_sum+=$(id -u visitor$i) 
done

echo "visitor1-visitor20的id之和为$id_sum"
[root@localhost ~]# ./id.sh 
更改用户 visitor1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor3 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor4 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor5 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor6 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor7 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor8 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor9 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor10 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor11 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor12 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor13 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor14 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor15 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor16 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor17 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor18 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor19 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor20 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

visitor1-visitor20的id之和为10250

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

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

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

十三、为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;

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

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

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

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


第七周作业