mount命令
mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
[功能]
掛載文件系統。
[描述]
所的文件在unix系統中用樹狀的方式組織, mount命令用于把從device上面發現的文件系統掛載到這個樹狀組織中,這樣就可以訪問設備中的文件系統了。
標準的格式是: mount -t type device dir
這樣會把設備上指定格式(type)的文件系統掛到dir目錄上面。
一些常用的操作:
*打印幫助信息:
mount -h
*打印版本信息:
mount -V
*列出所有被掛載的文件系統:
mount [-l] [-t type]
這里,-l列出所有被掛載的指定類型的文件系統。
*將文件系統中的一部分重新掛載:
mount -bind olddir newdir
這個功能在2.4的內核中支持,也可在fstab中添加:
/olddir /newdir none bind
進行這步后同樣的內容可以在兩個地方被訪問。也可remount單個的文件。據說這只能夠掛一種文件系統,即不能掛載submount.
*把整個的文件系統(包括submount)掛載到第二個地方:
mount --rbind olddir newdir
注意,文件系統上面的掛載項將會保持和原來掛載點上面的項一樣,并且不能通過和--bind/--rbind一起的-o選項來改變。
*內核2.5以后的版本支持把被掛在的樹掛載到另一個位置:
mount --move olddir newdir
內核2.6以后的版本支 持給mount以及子mount進行標記,標記為:shared,private,slave或者unbindable.shared提供mount的鏡 像功能,這樣當在任何一個鏡像中進行mount或者umount的時候都會傳遞給其他的鏡像,在其他的鏡像中反應出來。slave的mount會從它的 master接收傳遞過來的變化但是反過來的方向的傳播卻不行。private的mount不會做任何傳遞。unbindable是一個private的 mount,并且它不能夠通過bind的操作來進行克隆。具體可以參見內核源代碼中的文 檔:Documentation/sharedsubtree.txt.
標記的操作類似如下:
mount --make-shared mountpoint
mount --make-slave mountpoint
mount --make-private mountpoint
mount --make-unbindable mountpoint
下面的操作可以遞歸地改變給定的mountpoint下面的所有mount:
mount --make-rshared mountpoint
mount --make-rslave mountpoint
mount --make-rprivate mountpoint
"mount --make-runbindable mountpoint"
proc文件系統沒有與之相關的設備,當掛載它的時候可以在指定設備的地方指定任何的關鍵字例如proc,最好不要指定none,因為umount的時候‘none busy’這個提示很讓人迷惑。
大多數設備都是通過文件名字來指定的類似/dev/sda1,但是也有其他的可能。例如在掛載nfs文件系統的時候設備的文件名稱看起來可能會類似:knuth.cwi.nl:/dir,可以使用卷標或者UUID(參考-L和-U選項)來標記一個塊設備文件。
文件/etc/fstab里面的每一行用來描述設備如何掛載(例如使用什么選項等等).這個文件的使用有如下幾種方法:
1)如下的命令:
mount -a [-t type] [-O optlist]
會把fstab中指定的沒有noauto關鍵字的所有文件系統都掛載上,(一般它都在啟動腳本中被調用)如果加一個-F選項會讓mount進行fork,導致并行地掛載每個文件系統。
2)當掛載fstab中指定的文件系統的時候,只指定設備或者只指定掛載點就夠了。
3)一般來說,只有超級用戶才能夠掛載文件系統。然而,如果fstab中的某一行如果包含了user選項的時候,任何用戶就可以掛載相應的文件系統了。
例如:
假設/etc/fstab中有如下行:
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
任何用戶都可以用如下的命令掛載他的CDROM上面的iso9660文件系統:
mount /dev/cdrom
或者
mount /cd
更多的細節參考 fstab(5).只有mount了一個文件系統的用戶才能夠umount它。如果想要任何人都能夠umount,那么使用users選項來替代 user.owner選項和user類似,不過,它要求user必須是相應的設備文件的擁有者。group選項也類似,不過,user必須屬于相應的設備 文件的組的成員。
mount和umount程序維護當前掛載的文件系統,可以在/etc/mtab中看到。如果運行了沒有任何選項的mount,那么這個列表中的內容會被打印出來。
當proc文件系統被掛 載的時候(對應/proc目錄),文件/etc/mtab和/proc/mounts中的內容很類似。前者包含的信息更多,甚至包含了mount時的選 項,但是卻不是特別的實時更新的,可以參考-n選項。當你有許多掛載的東西的時候,將/etc/mtab替換為指向/proc/mounts的鏈接將會快 很多,但是也會丟失也些信息,以及使用loop設備的時候會有很多不方便的地方,同時使用user選項也會失敗。
[舉例]
*打印幫助信息:
mount -h
*打印版本信息:
mount -V
*掛載當前機器上面的一個盤分區到指定的掛載點dir:
#mount -t vfat /dev/sda2 /mnt
這里,假設我的磁盤第二 個分區中是vfat文件系統,實際"-t vfat"可以省略,因為一般linux會自動識別的。這個命令會把相應分區掛到/mnt中去,通過訪問/mnt目錄就可實現訪問/dev/sda2對應 的分區。sda是SATA磁盤設備名稱,如果磁盤有分區,就另有sda1,sda2...,如果有第二個磁盤那么就sdb。如果是ide硬盤,一般是 hda,hdb等。
*指定gb2312字符集的掛載:
#mount -t vfat -o iocharset=gb2312 /dev/sda7 /mnt/win
這樣的掛載的時候,指定使用gb2312字符集,這樣就可能沒有亂碼了。其他常用的字符包括cp936,utf8等等(ntfs的一般用utf8掛載)。必須是超級用戶才能執行。
*掛載自己制作的文件系統:
1)制作鏡像文件:
#dd if=/dev/zero of=/root/filesys_ebook bs=10M count=35
這里,將會制作一個全0的350M的鏡像文件。
2)格式化鏡像文件:
#mkfs.ext3 /root/filesys_ebook
這樣會把剛才制作的鏡像文件格式化為ext3格式的文件系統。至此,鏡像文件filesys_ebook就是一個獨立的ext3文件系統的鏡像了。
3)掛載鏡像文件系統:
#mount -o loop /root/filesys_ebook /mnt
這樣,就把自己制作的鏡像文件系統掛載到/mnt下面了,可以向里面寫入數據了。
*掛nfs系統:
$sudo mount -t nfs ip:path mountPoint
這里ip:path例如10.1.14.122:/home/quietheart,mountPoint就是你的本地目錄,有時候掛載不上去可以試試:mount -t nfs -o nolock ......
*利用mount 掛載光盤鏡像
sudo mount -o loop image.iso /mnt
這樣就把鏡像image.iso掛到/mnt目錄下面了。
*開機自動掛載文件系統:
修改/etc/fstab,添加如下行:
/dev/sda5 /mnt vfat defaults,rw,umask=0000 0 0
*查看當前掛載的所有文件系統:
$mount
輸入之后,輸出如下:
/dev/sda8 on / type ext3 (rw,relatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
lrm on /lib/modules/2.6.27-7-generic/volatile type tmpfs (rw,mode=755)
/dev/sda6 on /boot type ext3 (rw,relatime)
/dev/sda9 on /home type ext3 (rw,relatime)
/dev/sda5 on /mnt type vfat (rw,umask=0000)
securityfs on /sys/kernel/security type securityfs (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/quietheart/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=quietheart)
/dev/loop0 on /home/quietheart/桌面/tmp/K1_ROM1_v0.1.3_image/tmpMnt type ext3 (rw)
這里,顯示了各個掛載的系統的詳細情況。
*列出指定類型的被掛載的文件系統:
mount -l -t tmpfs
這里,-l可以省略。這樣會列出所有掛載的tmpfs的文件系統。
**卸載文件系統
*卸載文件系統1:
$sudo umount /dev/sda2
這里會卸載掛在/dev/sda2上面的文件系統。
*卸載文件系統2:
$sudo umount /mnt
這里根據安裝點卸載相應的文件系統。
具體參見umount的文檔。
**
*將文件系統中的一部分綁定掛載:
mount --bind olddir newdir
這里,olddir是一 個已經掛載的掛載點中的某個子目錄。這樣操作之后,對于這個olddir,可以從掛載點的olddir進行訪問,也可以從newdir進行訪問,如果卸載 了olddir的掛載點,newdir仍舊可以訪問原來olddir的內容,想要恢復newdir原來的內容,那么就umount newdir.
*將文件系統中的某個單個文件幫定掛載:
mount --bind oldfile newfile
這里,oldfile是 一個已經掛載的掛載點中的某個文件。這樣操作之后,對于這個oldfile,可以從掛載點的oldfile進行訪問,也可以從newfile進行訪問,如 果卸載了oldfile的掛載點,newfile仍舊可以訪問原來oldfile的內容,想要恢復newfile原來的內容,那么就umount newfile.
*將掛載點位置移動:
mount --move olddir newdir
這里,原來的掛載點是 olddir,我想要把掛載點更換到newdir的話,就用這個命令,這樣舊有的掛載點就沒有了。另外我實踐插入sd卡的時候,一般linux會自動在 /media/下創建一個disk目錄,然后掛載上去,當卸載的時候會自動刪除這個目錄;但是如果使用move的話這個目錄會遺留下來。
*掛載臨時文件系統:
mount -t tmpfs tmpfs tmpfsTest/
這里,tmpfs是一個在內存中開辟空間的一種文件系統。這里的第2個tmpfs處實際可以是任意字符串。例如:"mount -t tmpfs tmphahaha tmpfsTest/"之后,我用mount |grep Test,會輸出:
tmphahaha on /home/quietheart/test/tmpfsTest type tmpfs (rw)
[其他]
雜亂:
mount的-n選項表示掛載之后不寫文件/etc/mtab。
mount的--move表示移動掛載點。
**常見問題:
*掛載磁盤之后無法寫掛載之后的文件分區:
$sudo mount -o rw,umask=0000 /dev/sda5 /mnt
這里假設將/dev/sda5掛到/mnt上面。
*掛載/etc/fstab 下面不含"noauto"選項的文件系統:
#mount -a
問題:
重復掛載同一個目錄會怎么樣?
remount
轉自:http://blog.chinaunix.net/uid-9525959-id-2001635.html
總結
- 上一篇: PS2键盘扫描码:通码与断码
- 下一篇: 今天发现一个神奇的网站Greasy Fo