天天看點

linux下mount/unmount指令

格式:mount [-參數] [裝置名稱] [挂載點] 

其中常用的參數有:

-a 安裝在/etc/fstab檔案中類出的所有檔案系統。

-f 僞裝mount,作出檢查裝置和目錄的樣子,但并不真正挂載檔案系統。

-n 不把安裝記錄在/etc/mtab 檔案中。

-r 講檔案系統安裝為隻讀。

-v 詳細顯示安裝資訊。

-w 将檔案系統安裝為可寫,為指令預設情況。

-t  指定裝置的檔案系統類型,常見的有: 

ext2  linux目前常用的檔案系統 

msdos  ms-dos的fat,就是fat16 

vfat  windows98常用的fat32 

nfs  網絡檔案系統 

iso9660  cd-romCD光牒标準檔案系統 

ntfs  windows nt/2000/xp的檔案系統 

auto 自動檢測檔案系統 

-o  指定挂載檔案系統時的選項,有些也可寫到在/etc/fstab中。常用的有: 

defaults 使用所有選項的預設值(auto、nouser、rw、suid)

auto/noauto 允許/不允許以 –a選項進行安裝

dev/nodev 對/不對檔案系統上的特殊裝置進行解釋

exec/noexec 允許/不允許執行二進制代碼

suid/nosuid 确認/不确認suid和sgid位

user /nouser 允許/不允許一般使用者挂載

codepage=xxx 代碼頁 

iocharset=xxx 字元集 

ro 以隻讀方式挂載 

rw 以讀寫方式挂載 

remount 重新安裝已經安裝了的檔案系統

loop 挂載回旋裝置

需要注意的是,挂載點必須是一個已經存在的目錄,這個目錄可以不為空,但挂載後這個目錄下以前的内容将不可用,umount以後會恢複正常。使用多個-o參數的時候,-o 隻用一次,參數之間用半形逗號隔開:

code:

# mount –o remount,rw /

例如要挂載windows下檔案系統為fat32的d盤,一般而言在linux下這個分區對應/dev/hda5,根據具體的分區情況會有不同,這裡就以hda5來舉例說明:

# mkdir /mnt/hda5  //建立hda5的目錄作為挂載點,位置和目錄名可自定義//

# mount -t vfat /dev/hda5 /mnt/hda5

一般而言,linux會自動探測分區的檔案系統,除非讓你指定時,否則-t vfat 可以省掉。

# mount /dev/hda5 /mnt/hda5

這樣就可以進入/mnt/hda5目錄去通路分區中的資源了。 

3.      為什麼mount上分區後顯示不了中文檔案為問号/亂碼?

顯示問号表明你的系統中沒有可識别使用的中文字型,請先安裝中文字型。確定你的系統已經可以很好的顯示中文。顯示為亂碼一般是mount預設使用的檔案系統編碼和檔案系統中檔案的實際編碼不一緻造成的。要想正常顯示中文檔案,mount時需要用到 -o 參數裡的codepage和iocharset選項。codepage指定檔案系統的代碼頁,簡體中文中文代碼是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上去以後分區普通使用者不可寫?

mount時加上 –o umask=000 即可:

# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5

5.      為什麼mount上去後的分區中的檔案都變成短檔案名了?

這是檔案系統挂錯的原因,将fat32挂載成fat16時就會出現這種情況,先umount,然後用 –t vfat 重新挂載即可解決問題。

# mount –t vat /dev/hda5 /mnt/hda5

6.      為什麼不能mount ntfs分區?

這是核心不支援ntfs檔案系統的原因,請重新編譯核心或者安裝核心的ntfs檔案系統支援包,以使得核心有ntfs檔案系統的支援。

7.      如何挂載u盤和mp3?

如果計算機沒有其它scsi裝置和usb外設的情況下,插入的u盤的裝置路徑是 /dev/sda1,用指令:

# mkdir /mnt/u

# mount /dev/sda1 /mnt/u

挂載即可。

8.      可以直接使用iso檔案嗎?

可以,就是mount的這一選項使得linux下有免費虛拟光驅的說法,具體用法是:

# mkdir /mnt/iso 

# mount –o loop linux.iso /mnt/iso

當然,挂載以後挂載點/mnt/iso也是隻讀的。  

9.      我怎麼不可以mount iso檔案?

一般而言,大多數的發行版使用的核心均已将loop裝置的支援編譯進去了,但是也有沒有的情況,是以請確定系統所使用的核心支援loop裝置。

第二種情況是iso檔案被放置到了ntfs或其它隻讀檔案系統中了。挂載loop 裝置必須要求挂載到一個可寫的分區中,目前linux核心對ntfs檔案系統的寫支援非常有限,請将iso檔案複制到其它可寫檔案系統中後再挂載。

10.  如何挂載光驅和軟驅

一般來說cdrom的裝置檔案是/dev/hdc,軟驅的裝置名是/dev/fd0

# mkdir /mnt/cdrom 

# mount /dev/hdc /mnt/cdrom //挂載光驅 //

# mkdir /mnt/floppy  

# mount /dev/fd0 /mnt/floppy   //挂載軟驅 //

11.  為何挂載的cd-rom不能顯示中文檔案?

使用 –o iocharset=cp936 選項一般能解決問題,否則使用utf-8編碼。

# mount –o iocharset=cp936 /dev/hdc /mnt/cdrom

12.  如何開機自動挂載分區?

每次挂載都要輸入那麼長的指令的确是繁瑣了些,隻要将分區資訊寫到/etc/fstab檔案中即可實作系統啟動的自動挂載,例如對于/dev/hda5的自動挂載添加如下的行即可:

/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0

13.  如何挂載samba 分區?

# 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中實作自動挂載。

14.  mount --bind是什麼意思? 

mount --bind 是将一個目錄中的内容挂載到另一個目錄上,用法是

# mount --bind olddir newdir

這個指令使得自己搭建的ftp要共享某個目錄的時候變得特别友善。如果要取消mount用指令:

# mount --move olddir newdir 即可。

如果mount --bind 也想寫入fstab中的話格式如下:

olddir newdir none bind 0 0

15.  umount基本用法是?

譬如 /dev/hda5 已經挂載在/mnt/hda5上,用一下三條指令均可解除安裝挂載的檔案系統

# umount /dev/hda5

# umount /mnt/hda5

# umount /dev/hda5 /mnt/hda5

16.  為什麼umount的時候老顯示 device busy?

這是因為有程式正在通路這個裝置,最簡單的辦法就是讓通路該裝置的程式退出以後再umount。可能有時候使用者搞不清除究竟是什麼程式在通路裝置,如果使用者不急着umount,則可以用:

# umount -l /mnt/hda5

來解除安裝裝置。選項 –l 并不是馬上umount,而是在該目錄空閑後再umount。還可以先用指令 ps aux 來檢視占用裝置的程式pid,然後用指令kill來殺死占用裝置的程序,這樣就umount的非常放心了。

 方法一:

fuser -m -v /nfs_old/

          使用者  程序号  權限   指令

/nfs_old/:   root  2699    ..c..  bash

          root  2999    ..c..  su

如上所示,有兩個程序占用了,将其kill掉,再重新取消挂載。

kill -9 2699 2999

umount /nfs_old/

方法二:

umount  -l  /nfs_old/

方法三:

fuser -km /nfs_old/

繼續閱讀