Shell ❀ Linux系统磁盘快速挂载执行脚本

Posted 无糖可乐没有灵魂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell ❀ Linux系统磁盘快速挂载执行脚本相关的知识,希望对你有一定的参考价值。

文章目录

1 脚本代码详解


#!/bin/bash

echo "------------------------------------BEGIN------------------------------------"
# 判断默认安装路径是否为/dev/sda
if [ "$1" = "" ];then
  DISK=`lsblk |grep disk|grep -v sda|awk 'print $1'`
  echo " The default installation path is sda !"
else  
  DISK=`lsblk |grep disk|grep -v $1|awk 'print $1'`
  echo " The customized installation path is $1 !"
fi

# 磁盘分区函数
function PartedDisk

    for disk in $DISK
    do
        echo " Starting parted Disk $disk "
        parted -s /dev/$disk mklabel gpt &> /dev/null
        # 配置标签gpt
        parted -s /dev/$disk mkpart primary ext4  0 100% &> /dev/null
        # 配置分区名称、主从分区、分区格式、起始位置、结束位置
    done
    echo -e "\\033[32;40m All disk parted Done! \\033[0m"
    # 黑底绿色回显
    sleep 1s


# 格式化函数
function FormatDisk

    for disk in $DISK
    do
        echo " Starting format Disk $disk "
        mkfs.ext4 -F /dev/$disk1 &> /dev/null
        # 修改磁盘文件系统为ext4
    done
    echo -e "\\033[32;40m All disk format Done!!! \\033[0m"
    sleep 1s


# 挂载点创建函数
function MakeDir

    cd /home
    for disk in $DISK
    do
        echo " Starting make the $disk mount diretory! "
        mkdir -pv /home/$disk &> /dev/null
        # 创建挂载点目录,如/home/sda
    done
    echo -e "\\033[32;40m MakeDir Done!! \\033[0m"
    sleep 1s


# 挂载磁盘分区
function MountDisk

    for disk in $DISK
    do
        echo " Starting change aoto-mount file! "
        uuid=`blkid /dev/$disk1|awk 'print $2'|awk -F "\\"" 'print $2'`
        # 获取UUID
        echo "UUID=$uuid /home/$disk               ext4    defaults        1 2" >>uuid.txt
        # 配置自动挂载信息
    done
    cat uuid.txt >> /etc/fstab
    # 将自定义挂载文件信息定向至自动挂载文件


# 判断磁盘是否已经挂载
function Check_Disk

    for disk in $DISK
    do
        # 不返回查询
        cat /etc/fstab | grep -q $disk  
        # 校验前面查询是否执行成功,成功返回值为0;
        if  [[ $? -eq 0 ]];then
            # 若磁盘被挂载,则返回错误信息
            echo -e "\\033[31;40m ERROR,$disk is currently mounted, failed to mount again \\033[0m" 
        else
            # 若磁盘未被挂载,则执行前面函数,并执行一次后,退出循环
            PartedDisk&&FormatDisk&&MakeDir&&MountDisk 
            break
        fi
    done


# 函数调用
Check_Disk
# 执行挂载并查看结果
mount -a 
echo "---------------------------------MountStatus---------------------------------"
cat -n /etc/fstab | grep -i UUID
echo "-------------------------------------END-------------------------------------"

2 代码执行结果


此脚本执行时需要指定一个参数,该参数为Linux系统安装磁盘位置,若为/dev/sdc,只需要输入sdc即可,默认参数为sda;

2.1 使用默认系统路径执行脚本

2.2 使用指定系统路径执行脚本

2.3 磁盘已经完成挂载,执行代码将返回错误

3、脚本参数调整


  • 第21行可修改磁盘分区情况,依次为分区名称、主从分区、分区格式、起始位置、结束位置,修改位置~ primary ext4 0 100%
  • 第35行可修改磁盘格式化文件系统,修改位置mkfs.ext4
  • 第49行可修改挂载节点目录,修改位置/home/$disk,需要注意的是$disk为变量;
  • 第64行为配置系统自动挂载信息,可根据自定义情况进行修改;
  • 第84行为执行函数操作的相关命令,修改需注意;
  • 第93行执行挂载命令;

以上是关于Shell ❀ Linux系统磁盘快速挂载执行脚本的主要内容,如果未能解决你的问题,请参考以下文章

Shell ❀ Linux系统磁盘快速挂载执行脚本

linux挂载磁盘怎么开机

Linux之Shell脚本实战监控系统的磁盘空间使用率

shell脚本快速配置yum源

磁盘管理及shell脚本编程练习

Shell ❀ Linux系统自动挂载本地yum源并安装rpm依赖包