天天看点

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

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

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

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

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

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

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

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

(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

<code>1、显示所有磁盘块及分区信息</code>

<code>[root@localhost scripts]</code><code># fdisk -l /dev/[sh]d[a-z]</code>

<code>2、根据 2610 cylinders 和End 判断能否分区,并确认分区</code>

<code>3、管理分区</code>

<code>[root@localhost scripts]</code><code># fdisk /dev/sdb</code>

<code>    </code><code>n,p, , +20G, w</code>

<code>4、更新内核识别分区表</code>

<code>[root@localhost scripts]</code><code># partx -a /dev/sdb</code>

<code>5、格式化分区</code>

<code>[root@localhost scripts]</code><code># mke2fs -t ext4 -b 2048 -L 'TEST'  /dev/sdb2</code>

<code>6、查看默认挂载属性</code>

<code>[root@localhost scripts]</code><code># dumpe2fs -h /dev/sdb2</code>

<code>Default </code><code>mount</code> <code>options:    (none)</code>

<code>7、调整默认挂载属性acl</code>

<code>[root@localhost scripts]</code><code># tune2fs -o acl /dev/sdb2</code>

<code>8、查看默认挂载属性</code>

<code>Default </code><code>mount</code> <code>options:    acl  </code><code>##嘿嘿</code>

26

27

28

29

30

31

32

33

34

35

36

37

38

<code>1、查看sdb的分区表</code>

<code>[root@localhost scripts]</code><code># kpartx -l /dev/sdb</code>

<code>sdb1 : 0 20980827 </code><code>/dev/sdb</code> <code>63</code>

<code>sdb2 : 0 224910 </code><code>/dev/sdb</code> <code>20980890</code>

<code>2、破坏分区表</code>

<code>[root@localhost scripts]</code><code># dd if=/dev/zero of=/dev/sdb bs=512 count=1</code>

<code>1+0 records </code><code>in</code>

<code>1+0 records out</code>

<code>512 bytes (512 B) copied, 0.00428946 s, 119 kB</code><code>/s</code>

<code>[root@localhost scripts]</code><code># </code>

<code>3、管理sdb</code>

<code>n,p,1, ,+5G,w</code>

<code>4、让内核重读分区表</code>

<code>5、格式化</code>

<code>[root@localhost scripts]</code><code># mkfs.ext2 -L 'HUGE' /dev/sdb1</code>

<code>[root@localhost scripts]</code><code># tune2fs -O has_journal /dev/sdb1</code>

<code>[root@localhost scripts]</code><code># blkid /dev/sdb1</code>

<code>/dev/sdb1</code><code>: LABEL=</code><code>"HUGE"</code> <code>UUID=</code><code>"1b4a4a93-20a1-439e-b40b-50989cf21fed"</code> <code>SEC_TYPE=</code><code>"ext2"</code> <code>TYPE=</code><code>"ext3"</code> 

<code>6、开机挂载至</code><code>/mogdata</code>

<code>1)创建目录</code>

<code>[root@localhost scripts]</code><code># mkdir /mogdata</code>

<code>2)查看是否创建</code>

<code>[root@localhost scripts]</code><code># ls -ld /mogdata</code>

<code>drwxr-xr-x 2 root root 4096 Aug 10 16:29 </code><code>/mogdata</code>

<code>3)配置fstab</code>

<code>[root@localhost scripts]</code><code># vim + /etc/fstab</code>

<code>UUID=</code><code>"1b4a4a93-20a1-439e-b40b-50989cf21fed"</code>     <code>/mogdata</code>  <code>ext4    defaults,</code><code>sync</code><code>,noatime,nosuid 2 3</code>

<code>    </code><code>2:隔一天备份</code>

<code>    </code><code>3:检测次序</code>

39

40

41

42

43

44

45

46

<code>1、写脚本</code>

<code>[root@localhost scripts]</code><code># vim test1.sh</code>

<code>#!/bin/bash</code>

<code># Version: 0.0.2</code>

<code># Author: Lcc.org</code>

<code># Desc: 利用此前学到的if语句完成    (1) 列出当前系统识别的所有磁盘设备(2) 如果磁盘数量为1,则显示其磁盘空间信息 否则,显示最后一个磁盘上的空间使用信息。</code>

<code># bash弱类型:不用定义,直接赋值.默认为字符型.参与运算隐式转换</code>

<code>diskfile=`</code><code>ls</code> <code>/dev/</code><code>[sh]d[a-z]`</code>

<code>COUNT=$(</code><code>ls</code> <code>/dev/</code><code>[sh]d[a-z] | </code><code>wc</code> <code>-l)</code>

<code>#数值判断: -eq,-ne,-lt,-le,-gt,-ge</code>

<code>if</code> <code>[ $COUNT -</code><code>eq</code> <code>1 ]</code>

<code>then</code>

<code>        </code><code>#显示指定设备的状态信息</code>

<code>    </code><code>fdisk</code> <code>-l $diskfile</code>

<code>    </code><code>#自定义状态返回值:在bash脚本中,一旦遇到exit命令就会终止脚本,退出状态码为exit后的数值。</code>

<code>    </code><code>exit</code> <code>0</code>

<code>else</code>

<code>        </code><code>#以空白分割,由-n 后#指定的字段作为每行字段的数量</code>

<code>    </code><code>fdisk</code> <code>-l  `</code><code>echo</code> <code>$diskfile | </code><code>xargs</code> <code>-n1 | </code><code>tail</code> <code>-1`</code>

<code>fi</code>

<code>2、测试语法(没有信息就是最好的信息)</code>

<code>[root@localhost scripts]</code><code># bash -n test1.sh</code>

<code>3、给予执行权限</code>

<code>[root@localhost scripts]</code><code># chmod a+x test1.sh</code>

<code>4、确认执行结果</code>

<code>[root@localhost scripts]</code><code># ls -ld test1.sh   </code>

<code>-rwxr-xr-x 1 root root 450 Aug 10 16:44 test1.sh</code>

<code>5、运行脚本(显示的为最后一个)</code>

<code>[root@localhost scripts]</code><code># ./test1.sh</code>

<code>Disk </code><code>/dev/sdb</code><code>: 21.5 GB, 21474836480 bytes</code>

<code>255 heads, 63 sectors</code><code>/track</code><code>, 2610 cylinders</code>

<code>Units = cylinders of 16065 * 512 = 8225280 bytes</code>

<code>Sector size (logical</code><code>/physical</code><code>): 512 bytes / 512 bytes</code>

<code>I</code><code>/O</code> <code>size (minimum</code><code>/optimal</code><code>): 512 bytes / 512 bytes</code>

<code>Disk identifier: 0xf6885d69</code>

<code>   </code><code>Device Boot      Start         End      Blocks   Id  System</code>

<code>/dev/sdb1</code>               <code>1         654     5253223+  83  Linux</code>

<code>[root@localhost scripts]</code><code># cat test2.sh</code>

<code># Version: 0.0.3</code>

<code># Desc:.................</code>

<code>read</code> <code>-t 5 -p </code><code>'Enter a special file: '</code> <code>diskfile</code>

<code> </code><code>[ ! -n </code><code>"$diskfile"</code> <code>] &amp;&amp; </code><code>echo</code> <code>"あなたははしごそれを取る方法を知っていますか?"</code> <code>&amp;&amp; </code><code>exit</code> <code>1</code>

<code>if</code> <code>fdisk</code> <code>-l | </code><code>fgrep</code> <code>"Disk $diskfile"</code> <code>&amp;&gt; </code><code>/dev/null</code> 

<code>    </code><code>echo</code> <code>"Vitis vinifera L."</code>

<code>    </code><code>exit</code> <code>250</code>

<code>2、运行</code>

<code>1)给空白</code>

<code>[root@localhost scripts]</code><code># bash test2.sh </code>

<code>Enter a special </code><code>file</code><code>: あなたははしごそれを取る方法を知っていますか?</code>

<code>2)不空白,非设备</code>

<code>Enter a special </code><code>file</code><code>: lala   </code>

<code>Vitis vinifera L.</code>

<code>3)不空白,设备</code>

<code>Enter a special </code><code>file</code><code>: </code><code>/dev/sdb</code>

<code></code>

本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1955194,如需转载请自行联系原作者