1.最近幾次發(fā)現(xiàn)mount了一個網(wǎng)絡(luò)共享磁盤后, 就無法umount, 老是提示:device is busy, 服務(wù)又不能停止的。 無意發(fā)現(xiàn)可以用"umount -l"解決!
2.mount的基本用法是?
格式:mount [-參數(shù)] [設(shè)備名稱] [掛載點]
其中常用的參數(shù)有:
-a 安裝在/etc/fstab文件中類出的所有文件系統(tǒng)。
-f 偽裝mount,作出檢查設(shè)備和目錄的樣子,但并不真正掛載文件系統(tǒng)。
-n 不把安裝記錄在/etc/mtab 文件中。
-r 講文件系統(tǒng)安裝為只讀。
-v 詳細顯示安裝信息。
-w 將文件系統(tǒng)安裝為可寫,為命令默認情況。
-t <文件系統(tǒng)類型> 指定設(shè)備的文件系統(tǒng)類型,常見的有:
ext2 linux目前常用的文件系統(tǒng)
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 網(wǎng)絡(luò)文件系統(tǒng)
iso9660 CD-ROM光盤標準文件系統(tǒng)
ntfs windows NT/2000/XP的文件系統(tǒng)
auto 自動檢測文件系統(tǒng)
-o <選項> 指定掛載文件系統(tǒng)時的選項,有些也可寫到在/etc/fstab中。常用的有:
defaults 使用所有選項的默認值(auto、nouser、rw、suid)
auto/noauto 允許/不允許以 –a選項進行安裝
dev/nodev 對/不對文件系統(tǒng)上的特殊設(shè)備進行解釋
exec/noexec 允許/不允許執(zhí)行二進制代碼
suid/nosuid 確認/不確認suid和sgid位
user /nouser 允許/不允許一般用戶掛載
codepage=XXX 代碼頁
iocharset=XXX 字符集
ro 以只讀方式掛載
rw 以讀寫方式掛載
remount 重新安裝已經(jīng)安裝了的文件系統(tǒng)
loop 掛載回旋設(shè)備
需要注意的是,掛載點必須是一個已經(jīng)存在的目錄,這個目錄可以不為空,但掛載后這個目錄下以前的內(nèi)容將不可用,umount以后會恢復(fù)正常。使用多個-o參數(shù)的時候,-o 只用一次,參數(shù)之間用半角逗號隔開:
# mount –o remount,rw /
例如要掛載windows下文件系統(tǒng)為FAT32的D盤,一般而言在Linux下這個分區(qū)對應(yīng)/dev/hda5,根據(jù)具體的分區(qū)情況會有不同,這里就以hda5來舉例說明:
# mkdir /mnt/hda5 //創(chuàng)建hda5的目錄作為掛載點,位置和目錄名可自定義//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux會自動探測分區(qū)的文件系統(tǒng),除非讓你指定時,否則-t vfat 可以省掉。
# mount /dev/hda5 /mnt/hda5
這樣就可以進入/mnt/hda5目錄去訪問分區(qū)中的資源了。
3. 為什么mount上分區(qū)后顯示不了中文文件為問號/亂碼?
顯示問號表明你的系統(tǒng)中沒有可識別使用的中文字體,請先安裝中文字體。確保你的系統(tǒng)已經(jīng)可以很好的顯示中文。顯示為亂碼一般是mount默認使用的文件系統(tǒng)編碼和文件系統(tǒng)中文件的實際編碼不一致造成的。要想正常顯示中文文件,mount時需要用到 -o 參數(shù)里的codepage和iocharset選項。codepage指定文件系統(tǒng)的代碼頁,簡體中文中文代碼是936;iocharset指定字符集,簡體中文一般用cp936或gb2312。
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般來說 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解決問題了。
如果這樣做了以后還有問題,請嘗試UTF-8編碼:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
4. 為什么mount上去以后分區(qū)普通用戶不可寫?
mount時加上 –o umask=000 即可:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
5. 為什么mount上去后的分區(qū)中的文件都變成短文件名了?
這是文件系統(tǒng)掛錯的原因,將FAT32掛載成FAT16時就會出現(xiàn)這種情況,先umount,然后用 –t vfat 重新掛載即可解決問題。
# mount –t vat /dev/hda5 /mnt/hda5
7. 如何掛載U盤和mp3?
如果計算機沒有其它SCSI設(shè)備和usb外設(shè)的情況下,插入的U盤的設(shè)備路徑是 /dev/sda1,用命令:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
掛載即可。
8. 可以直接使用iso文件嗎?
可以,就是mount的這一選項使得Linux下有免費虛擬光驅(qū)的說法,具體用法是:
# mkdir /mnt/iso
# mount –o loop linux.iso /mnt/iso
當然,掛載以后掛載點/mnt/iso也是只讀的。
12. 如何開機自動掛載分區(qū)?
每次掛載都要輸入那么長的命令的確是繁瑣了些,只要將分區(qū)信息寫到/etc/fstab文件中即可實現(xiàn)系統(tǒng)啟動的自動掛載,例如對于/dev/hda5的自動掛載添加如下的行即可:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
13. 如何掛載samba 分區(qū)?
# mkdir /mnt/share
# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //192.168.1.100/share /mnt/share
如果中文顯示不正常請嘗試UTF-8編碼。當然可以寫到fstab中實現(xiàn)自動掛載。
14. mount --bind是什么意思?
mount --bind 是將一個目錄中的內(nèi)容掛載到另一個目錄上,用法是
# mount --bind olddir newdir
這個命令使得自己搭建的FTP要共享某個目錄的時候變得特別方便。如果要取消mount用命令:
# mount --move olddir newdir 即可。
如果mount --bind 也想寫入fstab中的話格式如下:
olddir newdir none bind 0 0
16. 為什么umount的時候老顯示 device busy?
這是因為有程序正在訪問這個設(shè)備,最簡單的辦法就是讓訪問該設(shè)備的程序退出以后再umount。可能有時候用戶搞不清除究竟是什么程序在訪問設(shè)備,如果用戶不急著umount,則可以用:
# umount -l /mnt/hda5
來卸載設(shè)備。選項 –l 并不是馬上umount,而是在該目錄空閑后再umount。還可以先用命令 ps aux 來查看占用設(shè)備的程序PID,然后用命令kill來殺死占用設(shè)備的進程,這樣就umount的非常放心了。另外一個非常管用的工具
假設(shè)無法卸載的設(shè)備為/dsg,運行下列命令即可:
$ fuser -m -v /dsg
USER PID ACCESS COMMAND
/dsg oracle9i 5947 ..c.. bash
oracle9i 6277 f.ce. vagentd
oracle9i 6280 f.ce. vagentd
oracle9i 6281 f.ce. vagentd
oracle9i 6282 f.ce. sender
oracle9i 6283 f.ce. sender
oracle9i 6284 f.ce. vagentd
oracle9i 6291 f.ce. vagentd
oracle9i 6292 f.... oracle
oracle9i 6294 f.... oracle
-m參數(shù)表明指定的路徑是一個掛載點顯示所有使用指定文件系統(tǒng)的進程,后面可以跟掛載點,-v參數(shù)給出詳細的輸出
用下面這個命令可以將占用目錄/dsg所有進程給kill掉:
$ fuser -m –k /dsg
這樣umount: /dsg: device is busy這個問題就可以解決.