马哥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网络班作业的主要内容,如果未能解决你的问题,请参考以下文章