48.Linux-普通U盤以及多分區U盤自動掛載

来源:https://www.cnblogs.com/lifexy/archive/2018/12/12/10107310.html
-Advertisement-
Play Games

在上章學習33.Linux-實現U盤自動掛載(詳解)後,只是講解了普通U盤掛載,並沒有涉及到多分區U盤,接下來本章來繼續學習 1.多分區U盤和普通U盤區別 1)U盤插上只會創建一個/dev/sda文件,這種一般表示該U盤沒有分區,這個sda文件便代表該U盤總大小,我們只需要掛載/dev/sda即可 ...


在上章學習33.Linux-實現U盤自動掛載(詳解)後,只是講解了普通U盤掛載,並沒有涉及到多分區U盤,接下來本章來繼續學習

 

 

1.多分區U盤和普通U盤區別

  • 1)U盤插上只會創建一個/dev/sda文件,這種一般表示該U盤沒有分區,這個sda文件便代表該U盤總大小,我們只需要掛載/dev/sda即可
  • 2)另一種U盤則會創建/dev/sda以及/dev/sda1文件,這種一般表示該u盤只有一個分區sda1,我們只需要掛載/dev/sda1即可
  • 3)最後一種U盤則是多分區情況,會創建/dev/sda,/dev/sda1,/dev/sda2... .../dev/sdaN等,這種表示該U盤有sda1~sdaN多個分區,我們需要掛載/dev/sda1~sdaN才行

 

2.接下來重新修改/etc/mdev.conf文件

sd[a-z] 0:0 660 * if [ $ACTION = "add" ]; then /etc/hotplug/usb/udisk_insert.sh; else /etc/hotplug/usb/udisk_remove.sh; fi
sd[a-z][1-9]+ 0:0 660 * if [ $ACTION = "add" ]; then /etc/hotplug/usb/udisk_insert1.sh; else /etc/hotplug/usb/udisk_remove.sh; fi

上面表示:

  • 當出現/dev/sda時,則會調用/etc/hotplug/usb/udisk_insert.sh,當移除/dev/sda時,則會調用/etc/hotplug/usb/udisk_remove.sh
  • 當出現/dev/sda1~9時,則會調用/etc/hotplug/usb/udisk_insert1.sh,當移除/dev/sda1~9時,則會調用/etc/hotplug/usb/udisk_remove.sh

 

3.添加/etc/hotplug/usb/udisk_insert.sh文件

#!/bin/sh

MOUNT_POINT=/mnt/usbdisk

if [ ! -f $MDEV ]; then
    if [ ! -d $MOUNT_POINT ]; then   #判斷掛載目錄是否存在
           mkdir -p $MOUNT_POINT    
fi

echo "${MDEV}  usb insert"
sleep 0.5                           #延時500ms,判斷一下是否有sda1,如果沒有,則表示沒有分區

if [!  -e "/dev/sda1"]; then        #如果有/dev/sda1,則屬於多分區U盤,所以不需要再掛載/dev/sda了    
          echo " ${MDEV} don't have to create " > /dev/console
          exit
fi

echo "create usb disk mount point: $MOUNT_POINT." > /dev/console

mount -t vfat,exfat,ntfs    /dev/$MDEV $MOUNT_POINT
   if [ $? -ne 0 ]; then
        echo "mount usb disk ${MDEV} falied!" > /dev/console
   else
        echo "mount usb disk successfully!" > /dev/console
   fi
fi

註意: 由於/dev/sda文件最先創建,所以上面需要延時500ms後,判斷是否有/dev/sda1,來區別是否是多分區

 

4.添加/etc/hotplug/usb/udisk_insert1.sh文件

#!/bin/sh

POINT_SOURCE=/mnt/usbdisk
num=${MDEV#*sda}                         #獲取sda尾碼數字

MOUNT_POINT=${POINT_SOURCE}${num}

if [ ! -f $MDEV ]; then
        if [ ! -d $MOUNT_POINT ]; then
                mkdir -p $MOUNT_POINT
fi

echo "${MDEV}  usb insert1"
echo "create usb disk mount point: $MOUNT_POINT." > /dev/console

mount -t vfat,exfat,ntfs    /dev/$MDEV $MOUNT_POINT
        if [ $? -ne 0 ]; then
                echo "mount usb disk ${MDEV} falied!" > /dev/console

        else
                echo "mount usb disk successfully!" > /dev/console
        fi
fi
    

 

5.添加/etc/hotplug/usb/udisk_remove.sh文件

#!/bin/sh
POINT_SOURCE=/mnt/usbdisk
num=${MDEV#*sda}
MOUNT_POINT=${POINT_SOURCE}${num}

umount $MOUNT_POINT
if [ $? -ne 0 ]; then
    echo "umount usb disk falied!    ${MDEV} " > /dev/console
else
    echo "umount usb disk successfully!" > /dev/console
fi

rm -rf $MOUNT_POINT echo "remove usb disk mount point: $MOUNT_POINT." > /dev/console

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 預設的Ubuntu 18.1桌面版沒有安裝ssh遠程登錄服務: 打開"終端視窗",輸入"sudo apt-get update"-->回車-->"輸入當前登錄用戶的管理員密碼"-->回車,就可以了。 安裝ssh 打開"終端視窗",輸入"sudo apt-get install openssh-ser ...
  • 1、製作redis_low_discovery.sh腳本 mkdir -p /data/service/script/zabbix cd /data/service/script/zabbix cat redis_low_discovery.sh #!/bin/bash#Fucation:mysql ...
  • 1.查看埠號 2.殺死進程 3.查看文件夾文件 4.重命名 5.複製文件 6.刪除文件或文件夾 7.新建文件 8.新建文件夾 此隨筆乃本人學習工作記錄,如有疑問歡迎在下麵評論,轉載請標明出處。 如果對您有幫助請動動滑鼠右下方給我來個贊,您的支持是我最大的動力。 此隨筆乃本人學習工作記錄,如有疑問歡 ...
  • c# 添加引用時報錯:“未能正確載入“ReferenceManagerPackage”包”的解決方法 在添加應用的時候,右鍵點擊“引用”,選擇“添加引用”後,會提示“**未能正確載入ReferenceManagerPackage包**”之類的信息。具體的解決方法如下: (1)點擊開始按鈕,在搜索框中 ...
  • 配置bind 1、確定已經安裝bind軟體,需要安裝3 個bind、bind-chroot、bind-util [root@localhost wj]# yum install –y bind bind-chroot bind-util 2、修改配置文件“/etc/named.conf” [root ...
  • 簡介 mktemp命令用於創建一個臨時的文件或者目錄。 語法格式 示例 不帶選項和參數的mktemp用於創建臨時文件,帶-d選項用於創建臨時目錄。 創建完成後,會輸出臨時文件的絕對路徑。 當僅運行mktemp命令的時候,其等同於 這裡的XXX就表示隨機數,至少需要3個X。 -p DIR, --tmp ...
  • php7連接mysql測試代碼 ...
  • 簡介 從命令的名字上來看,會讓人誤以為這是一個和安裝相關的命令。 其實不然,install命令用於複製文件(cp)或創建空目錄(mkdir)並設置相關的屬性(chown、chmod)。 這裡的屬性包含了ownership、許可權以及時間戳(保留時間戳,而不是修改)。 語法格式 單源複製。一般省略掉-T ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...