有時候服務器可能沒有必要的鍵盤等設備,此時就需要用到自動掛載命令了。下面由學習啦小編為大家整理了Linux系統自動掛載U盤的命令詳解,希望對大家有幫助!
Linux系統自動掛載u盤的命令詳解
格式: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-ROM光盤標准文件系統
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 掛載“回旋設備”以及“ISO鏡像文件”
需要注意的是,掛載點必須是一個已經存在的目錄,這個目錄可以不為空,但掛載後這個目錄下以前的內容將不可用,umount以後會恢復正常。使用多個-o 參數的時候,-o 只用一次,參數之間用半角逗號隔開:
# mount –o remount,rw /
Linux系統自動掛載u盤的方法步驟
規則編寫
編寫udev規則實現U盤插入時候的動作。規則文件寫在/etc/udev/rules.d 下。
如上, 通過規則定義U盤插入與拔出的動作即可,動作的具體實現可以在規則中編寫,也可以通過指定執行腳本來實現。本文的規則中僅指定執行腳本。
規則如下:
ENV{DEVTYPE}="partition",RUN+="/lib/udev/automount.sh",ENV{REMOVE_CMD}="/lib/udev/autounmount.sh"11
腳本編寫
將腳本文件寫在/lib/udev 下,根據上文規則,應該分別實現插入的動作腳本和拔出的動作腳本。
插入動作腳本
主要在於需要獲取到設備的卷標,來確定掛載的路徑(即$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
拔出動作腳本
在U盤拔出時候,及時刪掉掛載的路徑
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
自動執行動作腳本
這樣,當U盤插入時,/media/ 下就會出現於卷標相同的文件夾,並掛載上了U盤。因此,需要實現U盤插入自動執行的話,通過輪詢探測/media/ 下相應目錄是否存在即可。
如:
UDISK=$1
# ---------------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
補充:需要注意的問題
新版本的udev可能會遇到mount失效的問題,通過查詢資料可知,udev的rules運行於獨立的文件空間上,與用戶的文件空間不同,因此及時掛載上了,用戶也無法訪問。因此需要將udev的運行方式改為共享。
修改方式如下:
拷貝一份 /usr/lib/systemd/system/systemd-udevd.service 到 /etc/systemd/system/ (推薦)
編輯/etc/systemd/system/ 將 MountFlags 改為 shared
重啟即可。