歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux系統自動掛載u盤的命令詳解

Linux系統自動掛載u盤的命令詳解

日期:2017/8/19 9:45:43   编辑:Linux技術

  有時候服務器可能沒有必要的鍵盤等設備,此時就需要用到自動掛載命令了。下面由學習啦小編為大家整理了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

  重啟即可。

Copyright © Linux教程網 All Rights Reserved