Linux系統(tǒng)自動(dòng)掛載u盤的命令詳解
Linux系統(tǒng)自動(dòng)掛載u盤的命令詳解
有時(shí)候服務(wù)器可能沒(méi)有必要的鍵盤等設(shè)備,此時(shí)就需要用到自動(dòng)掛載命令了。下面由學(xué)習(xí)啦小編為大家整理了Linux系統(tǒng)自動(dòng)掛載U盤的命令詳解,希望對(duì)大家有幫助!
Linux系統(tǒng)自動(dòng)掛載u盤的命令詳解
格式:mount [-參數(shù)] [設(shè)備名稱] [掛載點(diǎn)]
其中常用的參數(shù)有:
-a 安裝在/etc/fstab文件中類出的所有文件系統(tǒng)。
-f 偽裝mount,作出檢查設(shè)備和目錄的樣子,但并不真正掛載文件系統(tǒng)。
-n 不把安裝記錄在/etc/mtab 文件中。
-r 講文件系統(tǒng)安裝為只讀。
-v 詳細(xì)顯示安裝信息。
-w 將文件系統(tǒng)安裝為可寫,為命令默認(rèn)情況。
-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光盤標(biāo)準(zhǔn)文件系統(tǒng)
ntfs windows NT/2000/XP的文件系統(tǒng)
auto 自動(dòng)檢測(cè)文件系統(tǒng)
-o <選項(xiàng)> 指定掛載文件系統(tǒng)時(shí)的選項(xiàng),有些也可寫到在 /etc/fstab 中。常用的有:
defaults 使用所有選項(xiàng)的默認(rèn)值(auto、nouser、rw、suid)
auto/noauto 允許/不允許以 –a選項(xiàng)進(jìn)行安裝
dev/nodev 對(duì)/不對(duì)文件系統(tǒng)上的特殊設(shè)備進(jìn)行解釋
exec/noexec 允許/不允許執(zhí)行二進(jìn)制代碼
suid/nosuid 確認(rèn)/不確認(rèn)suid和sgid位
user/nouser 允許/不允許一般用戶掛載
codepage=XXX 代碼頁(yè)
iocharset=XXX 字符集
ro 以只讀方式掛載
rw 以讀寫方式掛載
remount 重新安裝已經(jīng)安裝了的文件系統(tǒng)
loop 掛載“回旋設(shè)備”以及“ISO鏡像文件”
需要注意的是,掛載點(diǎn)必須是一個(gè)已經(jīng)存在的目錄,這個(gè)目錄可以不為空,但掛載后這個(gè)目錄下以前的內(nèi)容將不可用,umount以后會(huì)恢復(fù)正常。使用多個(gè)-o 參數(shù)的時(shí)候,-o 只用一次,參數(shù)之間用半角逗號(hào)隔開:
# mount –o remount,rw /
Linux系統(tǒng)自動(dòng)掛載u盤的方法步驟
規(guī)則編寫
編寫udev規(guī)則實(shí)現(xiàn)U盤插入時(shí)候的動(dòng)作。規(guī)則文件寫在/etc/udev/rules.d 下。
如上, 通過(guò)規(guī)則定義U盤插入與拔出的動(dòng)作即可,動(dòng)作的具體實(shí)現(xiàn)可以在規(guī)則中編寫,也可以通過(guò)指定執(zhí)行腳本來(lái)實(shí)現(xiàn)。本文的規(guī)則中僅指定執(zhí)行腳本。
規(guī)則如下:
ENV{DEVTYPE}="partition",RUN+="/lib/udev/automount.sh",ENV{REMOVE_CMD}="/lib/udev/autounmount.sh"11
腳本編寫
將腳本文件寫在/lib/udev 下,根據(jù)上文規(guī)則,應(yīng)該分別實(shí)現(xiàn)插入的動(dòng)作腳本和拔出的動(dòng)作腳本。
插入動(dòng)作腳本
主要在于需要獲取到設(shè)備的卷標(biāo),來(lái)確定掛載的路徑(即$ID_FS_LABEL)
#!/bin/sh
mount_point=$ID_FS_LABEL
if [ -z $mount_point ];then
mount_point=${DEVNAME##*/}
fi
if [ -n $mount_point ];then
mkdir -p /media/$mount_point
mount -t $ID_FS_TYPE -o gid=100,dmask=000,fmask=111,utf8,flush,rw,noatime,users $DEVNAME /media/$mount_point
fi
1234567891012345678910
拔出動(dòng)作腳本
在U盤拔出時(shí)候,及時(shí)刪掉掛載的路徑
mount_point=$ID_FS_LABEL
if [ -z $mount_point ];then
mount_point=${DEVNAME##*/}
fi
if [ -n $mount_point ];then
umount -l /media/$mount_point
rm -r /media/$mount_point
fi1234567812345678
自動(dòng)執(zhí)行動(dòng)作腳本
這樣,當(dāng)U盤插入時(shí),/media/ 下就會(huì)出現(xiàn)于卷標(biāo)相同的文件夾,并掛載上了U盤。因此,需要實(shí)現(xiàn)U盤插入自動(dòng)執(zhí)行的話,通過(guò)輪詢探測(cè)/media/ 下相應(yīng)目錄是否存在即可。
如:
UDISK= class="main">
Linux系統(tǒng)自動(dòng)掛載u盤的命令詳解
# ---------------main control area ---------------
while (true)
do
# probe mounted disk
if [ -e "$UDISK" ];then
echo "Mounted device [$UDISK] found !"
else
echo "Device not found [$UDISK] !"
fi
echo "Sleep for sometime..."
sleep 3s
done
1234567891011121314151612345678910111213141516
補(bǔ)充:需要注意的問(wèn)題
新版本的udev可能會(huì)遇到mount失效的問(wèn)題,通過(guò)查詢資料可知,udev的rules運(yùn)行于獨(dú)立的文件空間上,與用戶的文件空間不同,因此及時(shí)掛載上了,用戶也無(wú)法訪問(wèn)。因此需要將udev的運(yùn)行方式改為共享。
修改方式如下:
拷貝一份 /usr/lib/systemd/system/systemd-udevd.service 到 /etc/systemd/system/ (推薦)
編輯/etc/systemd/system/ 將 MountFlags 改為 shared
重啟即可。