磁盘管理和脚本交互小练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘管理和脚本交互小练习相关的知识,希望对你有一定的参考价值。

1、创建20G的文件系统,块大小2048,文件系统ext4,卷标TEST,要求此分区开机自动挂载至/tetsing目录,且默认挂载属性为acl

2、创建5G文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata,文件系统类型ext3

3、写一个脚本,完成如下功能:

利用此前学到的if语句完成

(1) 列出当前系统识别的所有磁盘设备

(2) 如果磁盘数量为1,则显示其磁盘空间信息

否则,显示最后一个磁盘上的空间使用信息。

3、写一个脚本,完成如下功能:

利用此前学到的if语句完成

(1) 让用户输入一个磁盘

(2) 存在,则显示其磁盘空间信息

否则,显示Fool.


1、创建20G的文件系统,块大小2048,文件系统ext4,卷标TEST,要求此分区开机自动挂载至/tetsing目录,且默认挂载属性为acl

1、显示所有磁盘块及分区信息
[[email protected] scripts]# fdisk -l /dev/[sh]d[a-z]
2、根据 2610 cylinders 和End 判断能否分区,并确认分区

3、管理分区
[[email protected] scripts]# fdisk /dev/sdb
    n,p, , +20G, w

4、更新内核识别分区表
[[email protected] scripts]# partx -a /dev/sdb
[[email protected] scripts]# partx -a /dev/sdb

5、格式化分区
[[email protected] scripts]# mke2fs -t ext4 -b 2048 -L ‘TEST‘  /dev/sdb2

6、查看默认挂载属性
[[email protected] scripts]# dumpe2fs -h /dev/sdb2
Default mount options:    (none)

7、调整默认挂载属性acl
[[email protected] scripts]# tune2fs -o acl /dev/sdb2

8、查看默认挂载属性
[[email protected] scripts]# dumpe2fs -h /dev/sdb2
Default mount options:    acl  ##嘿嘿


2、创建5G文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata,文件系统类型ext3

1、查看sdb的分区表
[[email protected] scripts]# kpartx -l /dev/sdb
sdb1 : 0 20980827 /dev/sdb 63
sdb2 : 0 224910 /dev/sdb 20980890
2、破坏分区表
[[email protected] scripts]# dd if=/dev/zero of=/dev/sdb bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00428946 s, 119 kB/s
[[email protected] scripts]# kpartx -l /dev/sdb
[[email protected] scripts]# 

3、管理sdb
[[email protected] scripts]# fdisk /dev/sdb
n,p,1, ,+5G,w

4、让内核重读分区表
[[email protected] scripts]# partx -a /dev/sdb

5、格式化
[[email protected] scripts]# mkfs.ext2 -L ‘HUGE‘ /dev/sdb1
[[email protected] scripts]# tune2fs -O has_journal /dev/sdb1
[[email protected] scripts]# blkid /dev/sdb1
/dev/sdb1: LABEL="HUGE" UUID="1b4a4a93-20a1-439e-b40b-50989cf21fed" SEC_TYPE="ext2" TYPE="ext3" 

6、开机挂载至/mogdata
1)创建目录
[[email protected] scripts]# mkdir /mogdata

2)查看是否创建
[[email protected] scripts]# ls -ld /mogdata
drwxr-xr-x 2 root root 4096 Aug 10 16:29 /mogdata

3)配置fstab
[[email protected] scripts]# vim + /etc/fstab
UUID="1b4a4a93-20a1-439e-b40b-50989cf21fed"		/mogdata  ext4	defaults,sync,noatime,nosuid 2 3
    2:隔一天备份
    3:检测次序


3、写一个脚本,完成如下功能:

利用此前学到的if语句完成

(1) 列出当前系统识别的所有磁盘设备

(2) 如果磁盘数量为1,则显示其磁盘空间信息

否则,显示最后一个磁盘上的空间使用信息。

1、写脚本
[[email protected] scripts]# vim test1.sh
#!/bin/bash
# Version: 0.0.2
# Author: Lcc.org
# Desc: 利用此前学到的if语句完成 	(1) 列出当前系统识别的所有磁盘设备(2) 如果磁盘数量为1,则显示其磁盘空间信息 否则,显示最后一个磁盘上的空间使用信息。

# bash弱类型:不用定义,直接赋值.默认为字符型.参与运算隐式转换
diskfile=`ls /dev/[sh]d[a-z]`
COUNT=$(ls /dev/[sh]d[a-z] | wc -l)

#数值判断: -eq,-ne,-lt,-le,-gt,-ge
if [ $COUNT -eq 1 ]
then
        #显示指定设备的状态信息
	fdisk -l $diskfile
	#自定义状态返回值:在bash脚本中,一旦遇到exit命令就会终止脚本,退出状态码为exit后的数值。
	exit 0
else
        #以空白分割,由-n 后#指定的字段作为每行字段的数量
	fdisk -l  `echo $diskfile | xargs -n1 | tail -1`
	exit 0
fi

2、测试语法(没有信息就是最好的信息)
[[email protected] scripts]# bash -n test1.sh

3、给予执行权限
[[email protected] scripts]# chmod a+x test1.sh

4、确认执行结果
[[email protected] scripts]# ls -ld test1.sh   
-rwxr-xr-x 1 root root 450 Aug 10 16:44 test1.sh

5、运行脚本(显示的为最后一个)
[[email protected] scripts]# ./test1.sh

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xf6885d69

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux

3、写一个脚本,完成如下功能:

利用此前学到的if语句完成

(1) 让用户输入一个磁盘

(2) 存在,则显示其磁盘空间信息

否则,显示Fool.

1、写脚本
[[email protected] scripts]# cat test2.sh
#!/bin/bash
# Version: 0.0.3
# Author: Lcc.org
# Desc:.................

read -t 5 -p ‘Enter a special file: ‘ diskfile
 [ ! -n "$diskfile" ] && echo "あなたははしごそれを取る方法を知っていますか?" && exit 1

if fdisk -l | fgrep "Disk $diskfile" &> /dev/null 
then
	fdisk -l $diskfile
	exit 0
else
	echo "Vitis vinifera L."
	exit 250
fi

2、运行
1)给空白
[[email protected] scripts]# bash test2.sh 
Enter a special file: あなたははしごそれを取る方法を知っていますか?
2)不空白,非设备
[[email protected] scripts]# bash test2.sh 
Enter a special file: lala   
Vitis vinifera L.
3)不空白,设备
[[email protected] scripts]# bash test2.sh 
Enter a special file: /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xf6885d69

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux


本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1955194

以上是关于磁盘管理和脚本交互小练习的主要内容,如果未能解决你的问题,请参考以下文章

磁盘管理及shell脚本编程练习

linux命令练习:磁盘管理相关练习

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

磁盘分区小练习,UEFI和GPT区别

CMDB小练习

大事件--练习项目分享--实现前后端交互