在Liunx系統中,如何有效地對存儲空間加以使用和管理,是一項非常重要的技術。本章講述如何查看系統中存儲空間的使用情況、如何進行文件的轉儲、以及如何進行軟盤的格式化。 磁盤空間管理 系統軟件和應用軟件,都要以文件的形式存儲在計算機的磁盤空間中。因此,應該隨時監視磁盤空間的使用情況。Linux系統提供了一組有關磁盤空間管理的命令。 df命令 功能:檢查文件系統的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息。 語法:df [選項] 說明:df命令可顯示所有文件系統對i節點和磁盤塊的使用情況。 該命令各個選項的含義如下: -a 顯示所有文件系統的磁盤使用情況,包括0塊(block)的文件系統,如/proc文件系統。 -k 以k字節為單位顯示。 -i 顯示i節點信息,而不是磁盤塊。 -t 顯示各指定類型的文件系統的磁盤空間使用情況。 -x 列出不是某一指定類型文件系統的磁盤空間使用情況(與t選項相反)。 -T 顯示文件系統類型。 例1:列出各文件系統的磁盤空間使用情況。 $ df Filesystem 1 K-blocks Used Available Use% Mounted on /dev/hda2 1361587 1246406 44823 97% / df命令的輸出清單的第1列是代表文件系統對應的設備文件的路徑名(一般是硬盤上的分區);第2列給出分區包含的數據塊(1024字節)的數目;第3,4列分別表示已用的和可用的數據塊數目。用戶也許會感到奇怪的是,第3,4列塊數之和不等於第2列中的塊數。這是因為缺省的每個分區都留了少量空間供系統管理員使用。即使遇到普通用戶空間已滿的情況,管理員仍能登錄和留有解決問題所需的工作空間。清單中Use% 列表示普通用戶空間使用的百分比,即使這一數字達到100%,分區仍然留有系統管理員使用的空間。最後,Mounted on列表示文件系統的安裝點。 例2:列出各文件系統的i節點使用情況。 $ df -ia Filesystem Inodes IUsed IFree Iused% Mounted on /dev/ hda2 352256 75043 277213 21% / none 0 0 0 0% /proc localhost:(pid221) 0 0 0 0% /net 例3:列出文件系統的類型。 $ df -T Filesystem Type 1K-blocks Used Available use% Mounted on /dev/hda2 ext2 1361587 1246405 44824 97% / 本例中的文件系統是ext2類型的。 du命令 du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況。 功能:統計目錄(或文件)所占磁盤空間的大小。 語法:du [選項] [Names…] 說明:該命令逐級進入指定目錄的每一個子目錄並顯示該目錄占用文件系統數據塊(1024字節)的情況。若沒有給出Names,則對當前目錄進行統計。 該命令的各個選項含義如下: -s 對每個Names參數只給出占用的數據塊總數。 -a 遞歸地顯示指定目錄中各文件及子孫目錄中各文件占用的數據塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所占的磁盤塊數。 -b 以字節為單位列出磁盤空間使用情況(系統缺省以k字節為單位)。 -k 以1024字節為單位列出磁盤空間使用情況。 -c 最後再加上一個總計(系統缺省設置)。 -l 計算所有的文件大小,對硬鏈接文件,則計算多次。 -x 跳過在不同文件系統上的目錄不予統計。 下面舉例說明du命令的使用: 例1:查看/mnt目錄占用磁盤空間的情況。 $ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa* drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/ -rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/ 1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei->/home/wei/ dev: tota1 0 lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom->/dev/hdb var: tata1 37 -r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe* 例2:列出各目錄所占的磁盤空間,但不詳細列出每個文件所占的空間。 $ du l ./dev 38 ./var 48 . 輸出清單中的第一列是以塊為單位計的磁盤空間容量,第二列列出目錄中使用這些空間的目錄名稱。 注意不帶選項的du命令將從當前目錄開始沿著目錄結構向下工作直到列出所有目錄的容量為止。這可能是一個很長的清單,有時只需要一個總數。這時可在du命令中加-s選項來取得總數: $ du –s /mnt /mnt 例3:列出所有文件和目錄所占的空間(使用a選項),而且以字節為單位(使用b選項)來計算大小。 $ du -ab 8 ./dev/cdrom l032 ./dev 36064 ./var/rawrite. exe 37088 ./var 6229 ./s1ack 1l0 ./aa l0 ./wei 45493 . 磁 盤 操 作 dd命令 功能:把指定的輸入文件拷貝到指定的輸出文件中,並且在拷貝過程中可以進行格式轉換。可以用該命令實現DOS下的diskcopy命令的作用。先用dd命令把軟盤上的數據寫成硬盤的一個寄存文件,再把這個寄存文件寫入第二張軟盤上,完成diskcopy的功能。需要注意的是,應該將硬盤上的寄存文件用rm命令刪除掉。系統默認使用標准輸入文件和標准輸出文件。 語法:dd [選項] if =輸入文件(或設備名稱)。 of =輸出文件(或設備名稱)。 ibs = bytes 一次讀取bytes字節,即讀入緩沖區的字節數。 skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。 obs = bytes 一次寫入bytes字節,即寫入緩沖區的字節數。 bs = bytes 同時設置讀/寫緩沖區的字節數(等於設置ibs和obs)。 cbs = byte 一次轉換bytes字節。 count=blocks 只拷貝輸入的blocks塊。 conv = ASCII 把EBCDIC碼轉換為ASCIl碼。 conv = ebcdic 把ASCIl碼轉換為EBCDIC碼。 conv = ibm 把ASCIl碼轉換為alternate EBCDIC碼。 conv = block 把變動位轉換成固定字符。 conv = ublock 把固定位轉換成變動位。 conv = UCase 把字母由小寫轉換為大寫。 conv = lcase 把字母由大寫轉換為小寫。 conv = notrunc 不截短輸出文件。 conv = swab 交換每一對輸入字節。 conv = noerror 出錯時不停止處理。 conv = sync 把每個輸入記錄的大小都調到ibs的大小(用NUL填充)。 例1:要把一張軟盤的內容拷貝到另一張軟盤上,利用/tmp作為臨時存儲區。把源盤插入驅動器中,輸入下述命令: $ dd if =/dev/fd0 of = /tmp/tmpfile 拷貝完成後,將源盤從驅動器中取出,把目標盤插入,輸入命令: $ dd if = /tmp/tmpfile of =/dev/fd0 軟盤拷貝完成後,應該將臨時文件刪除: $ rm /tmp/tmpfile 例2:把net.i這個文件寫入軟盤中,並設定讀/寫緩沖區的數目。 (注意:軟盤中的內容會被完全覆蓋掉) $ dd if = net.i of = /dev/fd0 bs = 16384 例3:將文件sfile拷貝到文件 dfile中。 $ dd if=sfile of=dfile fdformat 命令 軟盤是用戶常用的存儲介質之一。軟盤在使用之前必須先作格式化操作,然後可以用tar、dd、cpio等命令存儲數據,也可以在軟盤上建立可安裝的文件系統。 功能:低級格式化軟盤 語法:format [-n] device 說明:該命令的作用是對軟盤進行格式化。 -n 軟盤格式化後不作檢驗。 device 指定要進行格式化的設備,通常是下述設備之一: /dev/fd0d360 /dev/fd0h1200 /dev/fd0D360 /dev/fd0H360 /dev/fd0D720 /dev/fd0H720 /dev/fd0h360 /dev/fd0h720 /dev/fd0H1440