1、创建一个10G分区,并格式为ext4文件系统;
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
[root@localhost ~]# mke2fs -t ext4 -m 2 -L MYDATA -b 2048 /dev/sda8 [root@localhost ~]# tune2fs -o acl /dev/sda8 tune2fs 1.42.9 (28-Dec-2013) [root@localhost ~]# dumpe2fs /dev/sda8 | grep acl dumpe2fs 1.42.9 (28-Dec-2013) Default mount options: user_xattr acl
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
[root@localhost ~]# mount -o noexec,noatime /dev/sda8 /data/mydata [root@localhost ~]# cat /etc/mtab | grep /dev/sda8 /dev/sda8 /data/mydata ext4 rw,seclabel,noexec,noatime,data=ordered 0 0
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
[root@localhost ~]# mkswap /dev/sda9 Setting up swapspace version 1, size = 1048572 KiB no label, UUID=8d9e49df-5578-489d-8337-aa7d6faeecb5 [root@localhost ~]# swapon /dev/sda9 [root@localhost ~]# swapon -s | grep /dev/sda9 /dev/sda9 partition 1048572 0 -2
3、写一个脚本
(1)、获取并列出当前系统上的所有磁盘设备;
(2)、显示每个磁盘设备上每个分区相关的空间使用信息;
脚本内容
#!/bin/bash # fdisk -l | grep -o "/dev/[[:alnum:]]\{3,\}" df -lh
4、总结RAID的各个级别及其组合方式和性能的不同;
见“N22-妙手-第七周博客作业第四题:RAID各级别的特性”
5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;
[root@localhost ~]# mdadm -C /dev/md3 --force -a yes -l 1 -n 1 -x 1 -c 128K /dev/sde{2,3}
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;
(1) 创建RAID5设备
[root@localhost ~]# mdadm -C /dev/md1 -a yes -n 2 -x 1 -l 5 -c 256K /dev/sdc{2,3,5} mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.
(2) 格式化RAID5设备文件系统为ext4
[root@localhost ~]# mke2fs -t ext4 /dev/md1
(3)设置自动挂载属性
[root@localhost ~]# cat /etc/fstab | grep md1 /dev/md1 /backup ext4 acl,noatime 0 0
7、写一个脚本
(1) 接受一个以上文件路径作为参数;
(2) 显示每个文件拥有的行数;
(3) 总结说明本次共为几个文件统计了其行数;
脚本内容
#!/bin/bash # declare -i existFileNumber=0 declare -i nonexistFileNumber=0 if [ $# -lt 1 ]; then echo "At lease 1 argument" exit 2 fi for file in $@; do if [ -a $file ]; then fileLines=$(cat $file | wc -l) echo "The $file owns $fileLines lines" let existFileNumber+=1 else echo "This $file does not exists" let nonexistFileNumber+=1 fi done echo echo "*******************************************" echo "Summary information" echo "How many lines of each file calculated: $existFileNumber" echo "Wrong or nonexist file: $nonexistFileNumber"
执行结果
[root@localhost week07]# bash sh7.sh /etc/fstab /etc/mtab The /etc/fstab owns 14 lines The /etc/mtab owns 37 lines ******************************************* Summary information How many lines of each file calculated: 2 Wrong or nonexist file: 0
8、写一个脚本
(1) 传递两个以上字符串当作用户名;
(2) 创建这些用户;且密码同用户名;
(3) 总结说明共创建了几个用户;
脚本内容
if [ $# -lt 2 ]; then echo "At lease 2 usernames" exit 2 fi for username in $@; do if cat /etc/passwd | grep $username &> /dev/null; then echo "user $username already exits" else useradd $username echo $username | passwd --stdin $username &> /dev/null echo "$username added to current system" let createdUser+=1 fi done echo "number of users created: $createdUser"
执行结果
[root@localhost week07]# bash sh8.sh testuser5 testuser55 testuser555 testuser6 testuser5 added to current system testuser55 added to current system testuser555 added to current system testuser6 added to current system number of users created: 4
9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;
脚本内容
#!/bin/bash # declare -i idsum=0 for i in {1..20}; do vistorname=visitor$i if id $vistorname >& /dev/null; then echo "user $vistorname is already exists" else useradd $vistorname fi userid=$(cat /etc/passwd | grep $vistorname | cut -d: -f3) idsum=$[$idsum+$userid] done echo "the sum of id for users vistor1 to vistor10: $idsum"
执行结果
[root@localhost week07]# bash sh9.sh the sum of id for users vistor1 to vistor20: 22596
10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;
脚本内容
#!/bin/bash # filepath_init=/etc/rc.d/rc.sysinit filepath_func=/etc/rc.d/init.d/functions filepath_fstab=/etc/fstab linesum_init=$(grep "^#" $filepath_init | wc -l) linesum_func=$(grep "^#" $filepath_func | wc -l) linesum_fstab=$(grep "^#" $filepath_fstab | wc -l) echo "# line number of file /etc/rc.d/rc.sysinit is: $linesum_init" echo "# line number of file /etc/rc.d/init.d/functions $linesum_func" echo "# line number of file /etc/fstab: $linesum_fstab" linespace_init=$(grep "^$" $filepath_init | wc -l) linespace_func=$(grep "^$" $filepath_func | wc -l) linespace_fstab=$(grep "^$" $filepath_fstab | wc -l) totalspace=$[$linespace_init+$linespace_func+$linespace_fstab] echo "total blink line sum is: $totalspace"
执行结果
[root@localhost week07]# bash sh10.sh # line number of file /etc/rc.d/rc.sysinit is: 44 # line number of file /etc/rc.d/init.d/functions 43 # line number of file /etc/fstab: 7 total blink line sum is: 206
11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
脚本内容
#!/bin/bash # declare -i sumid=0 while read user_line; do userbash=$(echo $user_line | cut -f7 -d:) userid=$(echo $user_line | cut -f3 -d:) username=$(echo $user_line | cut -f1 -d:) sumid=$[$sumid+$userid] if [ "$userbash" == "/bin/bash" ]; then echo "$username, $userid" fi done < /etc/passwd echo "userid sum is: $sumid"
执行结果
abc10, 1064 userid sum is: 140656
12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;
脚本内容
#!/bin/bash # declare -i sumOfGroupUsers=0 while read userline; do username=$(echo $userline | cut -f1 -d:) usergroup=$(echo $userline | cut -f4 -d:) if [ "$(id -G $username)" == "$usergroup" ]; then continue else echo "Owned addintional groups' user: $username" sumOfGroupUsers=$[$sumOfGroupUsers+1] fi done < /etc/passwd echo "Total number of owned additional groups' user from current system: $sumOfGroupUsers"
执行结果
[root@localhost week07]# bash sh12.sh Owned addintional groups' user: postfix Owned addintional groups' user: amandabackup Owned addintional groups' user: qemu Owned addintional groups' user: xiangbaomeng Owned addintional groups' user: visitor1 Owned addintional groups' user: visitor2 Owned addintional groups' user: visitor3 Owned addintional groups' user: visitor15 Owned addintional groups' user: visitor16 Total number of owned additional groups' user from current system: 9
13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;
(1) 以设备/dev/sdb 和 /dev/sdc创建分区
[root@localhost ~]# fdisk -l /dev/sdb Device Boot Start End Blocks Id System /dev/sdb1 2048 31459327 15728640 8e Linux LVM /dev/sdb2 31459328 39847935 4194304 8e Linux LVM [root@localhost ~]# fdisk -l /dev/sdc Device Boot Start End Blocks Id System /dev/sdc1 2048 10487807 5242880 8e Linux LVM
(2)创建PV
[root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created [root@localhost ~]# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created
(3)创建卷组
[root@localhost ~]# vgcreate -s 8M vgtest /dev/sdb1 /dev/sdc1 Volume group "vgtest" successfully created
(4) 创建逻辑卷
[root@localhost ~]# lvcreate -L 5G -n mylv1 vgtest Logical volume "mylv1" created.
(5)将创建的逻辑格式化为ext4
[root@localhost ~]# mke2fs -t ext4 /dev/vgtest/mylv1
(6) 设置逻辑卷开机自动挂载
[root@localhost ~]# cat /etc/fstab | grep -E "/dev/vgtest/mylv1" /dev/vgtest/mylv1 /users ext4 default,acl 0 0
(7) 挂载逻辑卷mylv1至挂载点/users
[root@localhost ~]# mount /dev/vgtest/mylv1 /users
14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;
(1) 新建用户magedu
[root@localhost ~]# useradd -m -d /users/magedu magedu [root@localhost ~]# ls /users/magedu -al total 20 drwx------. 3 magedu magedu 100 Sep 21 06:01 . drwxr-xr-x. 4 root root 30 Sep 21 06:01 .. -rw-r--r--. 1 magedu magedu 18 Nov 20 2015 .bash_logout
(2) 切换至magedu并复制多个文件至用户家目录
[root@localhost ~]# su - magedu Attempting to create directory /users/magedu/perl5 [magedu@localhost ~]$ pwd /users/magedu [magedu@localhost ~]$ cp -r /etc/httpd /users/magedu
15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;
(1) 将逻辑卷扩展至9G
[root@localhost ~]# lvextend -L 9G /dev/vgtest/mylv1 Size of logical volume vgtest/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents). Logical volume mylv1 successfully resized.
(2) 将逻辑卷文件系统扩展至9G
[root@localhost ~]# resize2fs /dev/vgtest/mylv1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vgtest/mylv1 is mounted on /users/test; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/vgtest/mylv1 is now 2359296 blocks long.
(3) 查看扩展逻辑卷之后文件数据是否正常
[root@localhost ~]# df -lh | grep "users" /dev/mapper/vgtest-mylv1 8.8G 23M 8.3G 1% /users/test [root@localhost ~]# cat /users/magedu/httpd/conf/httpd.conf # # This is the main Apache HTTP server configuration file. It contains the # configuration directives that give the server its instructions. # See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;
(1) 卸载逻辑卷
[root@localhost ~]# umount /dev/vgtest/mylv1
(2) 检查文件系统
[root@localhost ~]# e2fsck -f /dev/vgtest/mylv1 /dev/vgtest/mylv1: 12/589824 files (0.0% non-contiguous), 75552/2359296 blocks
(3) 缩减文件系统容量
[root@localhost ~]# resize2fs /dev/vgtest/mylv1 7G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vgtest/mylv1 to 1835008 (4k) blocks. The filesystem on /dev/vgtest/mylv1 is now 1835008 blocks long.
(4) 缩减逻辑卷容量
[root@localhost ~]# lvreduce -L 7G /dev/vgtest/mylv1 Logical volume mylv1 successfully resized.
(5) 重新挂载逻辑卷至挂载点/users
[root@localhost ~]# mount /dev/vgtest/mylv1 /users
17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;
[root@localhost ~]# lvcreate -L 7G -p r -s -n snap_mylv1 /dev/vgtest/mylv1 Logical volume "snap_mylv1" created.
原创文章,作者:mxb93,如若转载,请注明出处:http://www.178linux.com/48647
评论列表(2条)
第八题和第九题都有提前判读用户是否存在,而且用两种方式很赞,学习的过程有的时候就是不断举一反三,打破常规,拓展知识体系去尝试各种方式,加油。
@luoweiro:多谢老师的鼓励!我之前有点陷入了低潮,在lamp哪里,东西一下来的太多,吸收不过来。。看到老师的话,我会继续努力的