天天看點

磁盤管理和腳本互動小練習

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,如需轉載請自行聯系原作者