一、磁盤管理
1、 機械式硬盤:
U盤、光盤、軟盤、硬盤、磁帶
2、 格式化:(Partition) 創建文件系統
MBR:主引導記錄 (512byte)
Master Boot Record
Main Boot Record
446bye:BootLoader, 是一個程序。引導加載器
64bytes:
16bytes:標識一個分區
2bytes:Magic Number
標記MBR是否有效。
3、硬連接和符號連接
硬連接:是指兩個存儲塊指向一個引導號
符號連接:(又叫軟連接)是指一個文件指向另外一個文件
創建連接 :ln [-s -v] SRC (源文件) DEST(目標文件)
ln SRC DEST 硬連接
ln -s SRC DEST 軟連接
硬鏈接特點:
1、只能對文件創建,不能應用於目錄;
2、不能跨文件系統;
3、創建硬鏈接會增加文件被鏈接的次數;
符號鏈接:
1、可應用於目錄;
2、可以跨文件系統;
3、不會增加被鏈接文件的鏈接次數;
4、其大小爲指定的路徑所包含的字符個數;
du:
-s 查看文件的大小
-sh 查看目錄的總容量
df : 顯示整個磁盤的分區情況
df -p -i
二、設備文件
b:塊設備 按塊爲單位,隨機訪問的設備 (硬盤)
c:字符設備 按字符爲單位,線性設備 (鍵盤)
/dev
主設備號:(major number) 標識設備類型
次設備號:(minor number) 標識同一種類型中不同設備
mknod
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE
硬盤設備的設備文件名:
IDE,ATA: hd
SATA:sd
SCSI:sd
USB:sd
a,b,c,... 來區別同一類型下的不同設備
IDE:
第一個IDE口:主、從
/dev/hda , /dev/hdb
第二個IDE口:主、從
/dev/hdc , /dev/hdd
hda:
hda1:第一個分區
hda2:第二個分區
hda3:第三個分區
hda4:
hda5:第一個邏輯分區
查看當前系統識別了幾塊硬盤: fdisk -l [/dev/to/some_device_file]
三、Linux支持的文件系統
1、管理磁盤分區:
fdisk /dev/sda
p:顯示當前硬件的分區,包括沒有保存的改動
n:創建新分區
e:擴展分區
p:主分區
d:刪除一個分區
w:保存退出
q:不保存退出
t:修改分區類型
L:
l:顯示所有支持的所有類型
2、文件系統管理
格式化分區:重新創建文件系統會損壞原有文件
mkfs:make file systemc
-t FSTYPE
文件系統類型:
ext2
ext3
cat /proc/filesystems:查看當前內核所支持文件系統類型:
3、專門管理ext系列文件:
mke2fs:
-j:創建ext3 類型文件系統
-b BLOCK_SIZE : 指定塊大小,默認爲 4096 可以取值爲 1024 或2048或4096
-L LABEL:指定分區卷標
-m # :指定預留給超級用戶的塊數百分比
- i #:用於指定爲多少字節的空間創建一個 inode 默認爲 8192 ,這裏給出的數值應該爲塊大小的2^n 倍。
-N :指定inode個數;
-F :強制創建文件系統
-E:用戶指定額外文件系統屬性;
4、blkid:查詢或查看磁盤設備的相關屬性
UUID
TYPE
LABEL :查看卷標
e2label :用於查看或定義卷標
e2label 設備文件 卷標 :設定卷標
5、tune2fs:調整文件系統的相關屬性
-j:不損害原有數據,將ext2 升級爲ext3;
-L LABEL:設定或修改卷標
-m # :調整預留百分比
-r # :指定預留多少塊
-o :設定默認掛載選項;
-c # :指定掛載次數達到#次之後進行自檢, 0或-1 表示關閉此功能
-i # :每掛載使用多少天后進行自檢,0或-1 表示關閉此功能
-l: 顯示超級塊中的信息;
dumpe2fs:顯示文件屬性信息
-h :只顯示超級塊的信息
fsck :檢查並修復Linux文件系統
-t FSTYPE :指定文件系統類型
-a :自動修復
e2fsck :專用於修復ext2/ext3 文件系統
-f :強制檢查;
-p:自動修復
四、掛載與卸載
掛載:將新的文件系統關聯至當前根文件系統
卸載:將新的文件系統從當前根文件系統中移除。
mount:掛載
mount 設備 掛載點
設備:
設備文件: /dev/sda5
卷標:LABEL=“”
UUID: UUID=“”
掛載點:目錄
1、此目錄沒有被其他進程使用
2、目錄得事先存在
3、目錄中的原有的文件將會被暫時隱藏。
mount:顯示當前系統已經掛載的設備及掛載點
mount [options] [-o options] DEVICE MOUNT_POINT
-a:表示掛載/etc/fstab文件中定義的所有文件系統
-n:默認情況下,mount命令每掛載一個設備,都會把掛載的設備信息保存至/etc/mtab文件;使用-n選項意味着掛載設備時,不把信息寫入此文件。
-t FSTYPE:指定正在掛載設備上的文件系統的類型;不適用此選項事, mount會調用blkid命令獲取對應文件系統的類型;
-r:只讀掛載,掛載光盤時,常用此選項。
-w:讀寫掛載,一般默認是讀寫掛載
-o:指定額外的掛載選項,也既指定文件系統啓用的屬性;
remount:重新掛載當前文件系統
ro:掛載爲只讀
rw:讀寫掛載
掛載完成後,要通過掛載點訪問對應文件系統上的文件。
umount:卸載某文件系統
umount 設備
umount 掛載點
卸載注意事項:
掛載的設備沒有進程使用;
練習題:
1、調整其預留百分比爲3%
tune2fs -m 3 -L DATA /dev/sda7
2、以重新掛載的方式掛載此文件系統爲不更新訪問時間戳,並驗證其效果
stat /backup/inittab
cat /backup/inittab
stat
mount -o remount,noatime /backup
cat
stat
3、對此文件系統強行做一次檢測
e2fsck -f /dev/sda7
4、刪除複製而來的所有文件,並將此文件系統重新掛載爲同步(sync);而後在此複製/etc目錄中的所有文件至此掛載點,體驗其性能變化:
rm -rf /dev/sda7
mount -o remount,sync /backup
cp -r /etc/* /backup
五、swap分區
free -m
fdisk命令中,調整分區類型爲82:
創建交換分區:
mkswap /dev/sda8
-L LABEL
swapon /dev/sda8 :啓用這個分區的swap
swapoff /dev/sda8 :停用這個分區的swap
迴環設備:
loopback:使用軟件來模擬實現硬件
dd命令:轉化並複製一個文件
if=輸入數據的來源
of=數據存儲目標
bs-1
count=2
seek=# :創建數據文件時,跳過的空間大小;
dd if=/dev/sad of=/mnt/usb/mbr.backup bs=512 count=1
dd if =/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1
cat /dev/cdrom > /root/rhe15.iso 製作鏡像
mount命令:可以掛載iso鏡像:
mount DEVICE MOUNT_POINT
-o loop: 掛載本地迴環設備,因此可以掛載鏡像
mount /dev/sda5 /mnt/test
文件系統的配置文件: /etc/fstab
os在初始時,會自動掛載此文件中定義的每個文件系統
要掛載的設備 掛載點 文件系統類型 掛載選項 轉儲頻率(每多少天做一次完全備份) 文件系統檢測次序(只有根可以爲1,0表示不檢查)
/dev/sda5 /mnt/test ext3 defaults 0 0
mount -a :掛載/etc/fstab 文件中定義的所有文件系統
fuser:驗證進程正在使用的文件或套接字文件
-v:查看某文件上正在運行的進程
-k:
-m
fuser -km MOUNT_POINT :終止正在訪問此掛載點的所有進程。
練習:
1、創建一個5G的分區,文件系統爲ext3,卷標爲MYDATA,塊大小爲 1024,預留管理空間爲磁盤分區的3%,要求開機後可以自動掛載至/data目錄,並且自動掛載的設備要使用卷標進行引用:
2、創建一個本地迴環文件/var/swaptemp/swapfile來用於swap,要求大小爲 512MB,卷標爲SWAP—FILE ,且開機自動啓用此交換設備:
mkdir /var/swaptemp
dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile
/etc/fstab
/var/swaptemp/swapfile swap swap defaults 0 0
3、上述第一問,如何讓其自動掛載的同時啓用ACL功能:
/etc/fstab
LABEL=‘MYDATA’ /data ext3 defaults,acl 0 0
六、壓縮、解壓縮命令
壓縮格式:gz ,bz2 ,xz ,zip ,Z
壓縮算法:算法不同,壓縮比也會不同
gzip: .gz
gzip /PATH/TO/SOMEFILE : 壓縮完成後會刪除原文件
-d:表示解壓縮,相當於 gunnzip
-# :1-9 ,指定壓縮比,默認是6
gunzip:
gunzip /PATH/TO/SOMEFILE.gz :解壓完成後會刪除原文件
zcat /PATH/TO/SOMEFILE.gz : 不解壓的情況下,查看文件的內容
bzip2 : .bz2
比gzip有着更大壓縮比的壓縮工具,使用格式近似
bzip2 /PATH/TO/SOMEFILE
-d:解壓縮
-#:1-9,默認是6
-k:壓縮時保留原文件
bunzip2 /PATH/TO/SOMEFILE.bz2
bzcat /PATH/TO/SOMEFILE.bz2 :不解壓的情況下,查看文件的內容
xz: .xz
xz /PATH/TO/SOMEFILE
-d:表示解壓縮
-# :1-9,默認是6
-k :壓縮時保留原文件
unxz:表示解壓縮
xzcat:表示不解壓查看文件內容
zip:既歸檔又壓縮的工具
zip FILENAME.zip FILE1 FILE2 ... : 壓縮後不刪除源文件
unzip FILENAME.zip
archive: 歸檔,歸檔本身並不意味着壓縮
tar:歸檔工具, .tar
-c:創建歸檔文件
-f FILE.tar :操作的歸檔文件
-x :展開歸檔,還原歸檔
--xattrs :歸檔時,保留文件的擴展性信息
-t :不展開歸檔,直接查看歸檔了哪些文件
-zcf:歸檔並調用gzip壓縮
-zxf:調用gzip解壓縮並展開歸檔
練習:寫一個腳本
從鍵盤讓用戶輸入幾個文件,腳本能夠將此幾個文件歸檔壓縮成一個文件:
read:
-p “PROMPT”:給出提示
七、while語句
腳本編程:
順序結構
選擇結構
if
case
循環結構
for
while
until
while循環: 適用於循環次數未知的場景
語法:
while CONDITION;do
statement
...
done
練習: 顯示一個菜單給用戶:
d|D) show disk usages。
m|M) show memory usages。
s|S) show swap usages。
*)quit
當用戶給定選項後顯示相應的內容:
擴展:當用戶選擇完成,顯示相應信息後,不推出,而讓用戶再一次選擇,再次顯示相應內容;除了用戶使用quit: