mount命令最新详细教程

背景

        需要在设备上面,自动化运行u盘里面的脚本,并且进入一个产测模式。因此实际使用了这个mount命令,所以,写了这么一篇供大家参考。

一. 定义        

        mount命令在Linux和类Unix系统中用于挂载文件系统,即将存储设备(如硬盘分区、CD-ROM、USB驱动器或网络共享)的文件系统关联到当前文件系统的某个目录上。这样,用户就可以通过该目录访问存储设备中的数据。

以下是mount命令的基本语法和用法详解:

mount [-选项] 设备名 挂载点

或者

mount -t 文件系统类型 [-选项] 设备名 挂载点

参数说明:

        -a:挂载 /etc/fstab 文件中定义的所有未挂载的文件系统。
        -f:不实际执行挂载操作,通常与 -v一起使用来测试或调试挂载命令。
        -F:结合 -a使用时,对于每一个挂载动作产生一个子进程执行挂载,有助于加快大量挂载操作的速度。
        -h:显示帮助信息。
        -n:不将挂载信息写入/etc/mtab 文件,这个选项在某些特殊情况下,例如没有可写文件系统时有用。
        -r:以只读模式挂载文件系统。
        -t vfstype:指定文件系统的类型,例如 ext4、xfs、nfs、cifs 等。
        -o options:设置挂载选项,可以是多个选项,用逗号分隔,比如 rw 表示读写权限,noatime表示不更新文件的访问时间戳,defaults 表示使用默认选项等。
        设备名:要挂载的物理设备或远程资源的路径,如 /dev/sda1/server/share
        挂载点:挂载设备的本地目录,即你希望访问设备内容的位置,如 /mnt/mydrive

二. 实战

        2.1 首先我们需要知道系统的挂载情况,显示每个已挂载的文件系统(通常是硬盘分区、网络存储等)的总容量、已使用的空间、剩余可用空间以及使用率等信息。

df

         2.2 列出系统上所有可识别的块设备(如硬盘、SSD、USB驱动器等)及其分区信息等(比如我挂在了一个u盘),详细情况如下:

fdisk -l

        2.3  给u盘再分一个区如:/dev/sda2.

        2.3.1 使用如下命令分区:

fdisk /dev/sda

         2.3.2 输入m,列出对应的命令列表(不同的操作对应不同的写法,不累同)。

        2.3.3 输入n添加新的分区:(输入n->e->2->63添加扩展分区)p 列出新建的分区:

         2.3.4 输入w保存分区:

        2.4 查看系统支持哪几种文件系统格式:

        2.5 格式化分区(格式化成ext2):

          2.6 用mount命令 把u盘设备挂载到/tmp/udisk_test文件目录上:

        2.7 使用umount解除挂在:

umount /var/tmp/udisk_test

        最后,在使用mount命令之前,确保拥有足够的权限,并且设备已经准备好被挂载(如果是硬件设备,确保它已被系统识别)。在卸载设备时,使用umount命令并提供挂载点作为参数。

        新年第二篇,祝大家2024,顺顺利利。加油!!!!!,一起涨知识。 

三. 源码

        通过以上是建立了运行环境,附录我的源码,才是自动化该有的样子

#!/bin/sh  
# This script checks for the existence of /dev/sda1 and executes a user-defined startup script if it does.  
  
LOG_FILE="/tmp/udisk.log"  
MOUNT_POINT_USB="/mnt/usb1_1/factory.sh"  
MOUNT_POINT="/tmp/udisk" 
SCRIPT_PATH="$MOUNT_POINT/factory.sh"  
DEVICE="/dev/sda1"  
DEVICE_USB_DIR="/mnt/usb1_1"
DEVICE_USB_DIR_MNT="/mnt"
count=1


  
# Log start of script execution  
echo "udisk_script_exec start" >> "$LOG_FILE"  


# Determine if the USB drive exists &&
# Check if the device exists and is a block device  
if [ -b "$DEVICE" ]; then  
    echo "$DEVICE exists" >> "$LOG_FILE"
    
    #Waiting to load the USB drive file
    
	echo "count=$count" >> "$LOG_FILE"  
	while ! [ -f $MOUNT_POINT_USB ]
	do
		sleep 3
		date >> "$LOG_FILE" 
		count=$((count+1))	
		if [ $count -eq 6 ]; then
			break
		fi
	done
	
	echo "count=$count" >> "$LOG_FILE"  
    # Create the mount point if it doesn't exist  
    mkdir -p "$MOUNT_POINT"  

  	# cp file
  	cp "$MOUNT_POINT_USB" "$MOUNT_POINT"
  	
    # Mount the device  
    #mount "$DEVICE" "$MOUNT_POINT" 
    
    # Ensure the script is executable 
  	# 检查文件是否存在
	if [ -f "$SCRIPT_PATH" ]; then
	    echo "文件 $SCRIPT_PATH 存在" >> "$LOG_FILE"  	        
	    # 尝试更改权限,并检查结果
	    chmod +x "$SCRIPT_PATH"
	    if [ $? -eq 0 ]; then
	        echo "chmod命令执行成功,已为$SCRIPT_PATH赋予了执行权限。" >> "$LOG_FILE"  
	    else
	        echo "chmod命令执行失败,请检查当前用户是否真的有权限更改$SCRIPT_PATH的权限。" >> "$LOG_FILE"  
	    fi
	else
	    echo "文件 $SCRIPT_PATH 不存在。" >> "$LOG_FILE"  
	fi
       
    # Check if the script is executable and run it  
    if [ -x "$SCRIPT_PATH" ]; then  
        bash "$SCRIPT_PATH"
        echo "factory.sh run success" >> "$LOG_FILE"  
    else  
        echo "factory.sh is not executable" >> "$LOG_FILE"  
    fi  
  
    # Optionally, you can uncomment the following lines to unmount and remove the mount point  
    # umount "$MOUNT_POINT"  
    # rmdir "$MOUNT_POINT"  
  
else  
    #echo "$DEVICE does not exist" >> "$LOG_FILE" 
    
	echo "$MOUNT_POINT_USB文件目录不存在" >> "$LOG_FILE" 
   	
	# 定义日志文件路径,并确保路径有效且存在
	#LOG_FILE=/tmp/udisk.log

	# 检查日志文件路径是否存在,如果不存在则创建
	if [ ! -f "$LOG_FILE" ]; then
	    touch "$LOG_FILE"
	fi

	# 运行命令并重定向输出到日志文件
	echo "Starting the command execution at $(date)" >> "$LOG_FILE"

	result="`sidbg 3 webd  on`"
	cnt=1
	echo "result = $result cnt = $cnt" >> "$LOG_FILE" 2>&1

	while [ "$result" != "upmod is set on now. " ]; do
	    result="$(sidbg 3 webd on)"
	    cnt=$((cnt+1))	    
	done
	echo "result = $result cnt = $cnt" >> "$LOG_FILE" 2>&1
	# 显示命令执行结果
	echo "Command execution finished at $(date)" >> "$LOG_FILE"
fi  

if [ ! -f "$SCRIPT_PATH" ]; then
	echo "$SCRIPT_PATH文件不存在" >> "$LOG_FILE" 
   	
	# 定义日志文件路径,并确保路径有效且存在
	#LOG_FILE=/tmp/udisk.log

	# 检查日志文件路径是否存在,如果不存在则创建
	if [ ! -f "$LOG_FILE" ]; then
	    touch "$LOG_FILE"
	fi

	# 运行命令并重定向输出到日志文件
	echo "Starting the command execution at $(date)" >> "$LOG_FILE"

	result="`sidbg 3 webd on`"
	cnt=1
	echo "result = $result cnt = $cnt" >> "$LOG_FILE" 2>&1

	while [ "$result" != "upmod is set on now. " ]; do
	    result="$(sidbg 3 webd on)"
	    cnt=$((cnt+1))	    
	done
	echo "result = $result cnt = $cnt" >> "$LOG_FILE" 2>&1
fi

#------------------------------------------------
# 检查日志文件路径是否存在,如果不存在则创建
if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
fi

# 定义配置文件路径  
CONFIG_FILE="/etc/config_file.txt"  
#将文件转换成Unix格式
dos2unix "$CONFIG_FILE"

chmod 666 "$CONFIG_FILE" 
#读取文件里面的每一个值
# 获取 upmode 的值
UPMODE="$(grep 'upmode=' "$CONFIG_FILE"  | cut -d "=" -f2)"

# 获取 upmode_off 的值
UPMODE_OFF="$(grep 'upmode_off=' "$CONFIG_FILE" | cut -d "=" -f2)"

# 获取 upmode_on 的值
UPMODE_ON="$(grep 'upmode_on=' "$CONFIG_FILE" | cut -d "=" -f2)"

# 输出结果
echo "upmode: $UPMODE" >> "$LOG_FILE"
echo "upmode_off: $UPMODE_OFF" >> "$LOG_FILE"
echo "upmode_on: $UPMODE_ON" >> "$LOG_FILE"
# 定义要修改的值及其新值  
declare -A modifications  
if [ $UPMODE = "True" ]; then
    echo "相等" >> "$LOG_FILE"
else
    echo "不相等" >> "$LOG_FILE"
fi

if [ $UPMODE = "True" ] && [ $UPMODE_OFF = "False" ] && [ $UPMODE_ON = "True" ]; then
    echo "need to set upmode_off is true" >> "$LOG_FILE"
    modifications["upmode"]="True"  
    modifications["upmode_off"]="True"  
    modifications["upmode_on"]="True"  

elif [ $UPMODE = "True" ] && [  $UPMODE_OFF == "True" ] && [ $UPMODE_ON == "True" ]; then
    echo "upmode is set UPMODE_ON UPMODE UPMODE_OFF all is false" >> "$LOG_FILE"
    modifications["upmode"]="False"  
    modifications["upmode_off"]="False"  
    modifications["upmode_on"]="False"  
else
    echo "need to set upmode  successful" >> "$LOG_FILE"
fi

# 读取配置文件并修改值  
while IFS="=" read -r var value || [[ -n "$value" ]]; do  
    # 检查是否需要修改此变量  
    if [[ -n ${modifications["$var"]} ]]; then  
        # 更新变量的值  
        new_value=${modifications["$var"]}  
        echo "$var=$new_value"  
    else  
        # 如果不需要修改,则原样输出  
        echo "$var=$value"  
    fi  
done < "$CONFIG_FILE" > "${CONFIG_FILE}.tmp"  

# 将修改后的内容移回原文件  
mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE"  

echo "Values have been updated in the file: $CONFIG_FILE" >> "$LOG_FILE"
 
# End of script logging  
echo "udisk_script_exec end" >> "$LOG_FILE"

最后当然要点赞加关注啦!!!!!☺ 

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值