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

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1、显示所有磁盘块及分区信息
[root@localhost scripts]# fdisk -l /dev/[sh]d[a-z]
2、根据 2610 cylinders 和End 判断能否分区,并确认分区
 
3、管理分区
[root@localhost scripts]# fdisk /dev/sdb
    n,p, , +20G, w
 
4、更新内核识别分区表
[root@localhost scripts]# partx -a /dev/sdb
[root@localhost scripts]# partx -a /dev/sdb
 
5、格式化分区
[root@localhost scripts]# mke2fs -t ext4 -b 2048 -L 'TEST'  /dev/sdb2
 
6、查看默认挂载属性
[root@localhost scripts]# dumpe2fs -h /dev/sdb2
Default mount options:    (none)
 
7、调整默认挂载属性acl
[root@localhost scripts]# tune2fs -o acl /dev/sdb2
 
8、查看默认挂载属性
[root@localhost scripts]# dumpe2fs -h /dev/sdb2
Default mount options:    acl  ##嘿嘿


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1、查看sdb的分区表
[root@localhost scripts]# kpartx -l /dev/sdb
sdb1 : 0 20980827 /dev/sdb 63
sdb2 : 0 224910 /dev/sdb 20980890
2、破坏分区表
[root@localhost 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
[root@localhost scripts]# kpartx -l /dev/sdb
[root@localhost scripts]
 
3、管理sdb
[root@localhost scripts]# fdisk /dev/sdb
n,p,1, ,+5G,w
 
4、让内核重读分区表
[root@localhost scripts]# partx -a /dev/sdb
 
5、格式化
[root@localhost scripts]# mkfs.ext2 -L 'HUGE' /dev/sdb1
[root@localhost scripts]# tune2fs -O has_journal /dev/sdb1
[root@localhost scripts]# blkid /dev/sdb1
/dev/sdb1: LABEL="HUGE" UUID="1b4a4a93-20a1-439e-b40b-50989cf21fed" SEC_TYPE="ext2" TYPE="ext3" 
 
6、开机挂载至/mogdata
1)创建目录
[root@localhost scripts]# mkdir /mogdata
 
2)查看是否创建
[root@localhost scripts]# ls -ld /mogdata
drwxr-xr-x 2 root root 4096 Aug 10 16:29 /mogdata
 
3)配置fstab
[root@localhost 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
1、写脚本
[root@localhost 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、测试语法(没有信息就是最好的信息)
[root@localhost scripts]# bash -n test1.sh
 
3、给予执行权限
[root@localhost scripts]# chmod a+x test1.sh
 
4、确认执行结果
[root@localhost scripts]# ls -ld test1.sh   
-rwxr-xr-x 1 root root 450 Aug 10 16:44 test1.sh
 
5、运行脚本(显示的为最后一个)
[root@localhost 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1、写脚本
[root@localhost 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)给空白
[root@localhost scripts]# bash test2.sh 
Enter a special file: あなたははしごそれを取る方法を知っていますか?
2)不空白,非设备
[root@localhost scripts]# bash test2.sh 
Enter a special file: lala   
Vitis vinifera L.
3)不空白,设备
[root@localhost 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










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1955194,如需转载请自行联系原作者
上一篇:【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)


下一篇:如果高效使用apt-get、pip来下载安装依赖包、软件呢?