科技常识:Linux 自动分区、格式化、挂载脚本详解

2021-04-12 00:13:55
导读 今天小编跟大家讲解下有关科技常识:Linux 自动分区、格式化、挂载脚本详解,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关

今天小编跟大家讲解下有关科技常识:Linux 自动分区、格式化、挂载脚本详解,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关科技常识:Linux 自动分区、格式化、挂载脚本详解的相关资料,希望小伙伴会喜欢也能够帮助大家。

自动分区、格式化、挂载脚本

功能:自动检测是否有尚未分区的数据盘,格式化新的数据盘并自动挂载

解决了什么问题:一键式检测是否有尚未分区的数据盘,并能对其格式化和自动挂载,省去了复杂的命令和步骤

执行方法:以root身份执行命令

wget http://mirrors.linuxeye.com/scripts/auto_fdisk.shchmod +x auto_fdisk.sh./auto_fdisk.sh

结果:出现如下即自动分区、格式化、挂载成功:

脚本内容如下:

#!/bin/bash# Author: yeho <lj2007331 AT gmail.com># BLOG: https://blog.linuxeye.com## Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+## Project home page:# http://oneinstack.com# https://github.com/lj2007331/oneinstackexport PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binclearprintf"######################################################################## OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+ ## Auto fdisk ## For more information please visit http://oneinstack.com ########################################################################"echo=echofor cmd in echo /bin/echo; do $cmd >/dev/null 2>&1 || continue if ! $cmd -e""| grep -qE '^-e'; then echo=$cmd break fidoneCSI=$($echo -e"\033[")CEND="${CSI}0m"CDGREEN="${CSI}32m"CRED="${CSI}1;31m"CGREEN="${CSI}1;32m"CYELLOW="${CSI}1;33m"CBLUE="${CSI}1;34m"CMAGENTA="${CSI}1;35m"CCYAN="${CSI}1;36m"CSUCCESS="$CDGREEN"CFAILURE="$CRED"CQUESTION="$CMAGENTA"CWARNING="$CYELLOW"CMSG="$CCYAN"# Check if user is root[ $(id -u) !="0"] && { echo"${CFAILURE}Error: You must be root to run this script${CEND}"; exit 1; }MOUNT_DIR=/dataFSTAB_FILE=/etc/fstabcount=0TMP1=/tmp/.tmp1TMP2=/tmp/.tmp2> $TMP1> $TMP2# check lock file, one time only let the script run one time LOCKfile=/tmp/.$(basename $0)if [ -f"$LOCKfile"];then echo echo"${CWARNING}The script is already exist, please next time to run this script${CEND}"echo exitelse echo echo"${CMSG}Step 1.No lock file, begin to create lock file and continue${CEND}"echo touch $LOCKfilefi# check disk partitioncheck_disk() { > $LOCKfile for i in `fdisk -l | grep"Disk"| grep"/dev"| awk '{print $2}' | awk -F: '{print $1}' | grep"vd"` do DEVICE_COUNT=$(fdisk -l $i | grep"$i"| awk '{print $2}' | awk -F: '{print $1}' | wc -l) NEW_MOUNT=$(df -h) if [ $DEVICE_COUNT -lt 2 ];then if [ -n"$(echo $NEW_MOUNT | grep -w"$i")"-o"$(grep -v '^#' $FSTAB_FILE | grep -v ^$ | awk '{print $1,$2,$3}' | grep -w"$i"| awk '{print $2}')"== '/' -o"$(grep -v '^#' $FSTAB_FILE | grep -v ^$ | awk '{print $1,$2,$3}' | grep -w"$i"| awk '{print $3}')"== 'swap' ];then echo"${CWARNING}The $i disk is mounted${CEND}"else echo $i >> $LOCKfile echo"You have a free disk, Now will fdisk it and mount it"fi fi done DISK_LIST=$(cat $LOCKfile) if ["X$DISK_LIST"=="X"];then echo echo"${CWARNING}No free disk need to be fdisk. Exit script${CEND}"echo rm -rf $LOCKfile exit 0 else echo"${CMSG}This system have free disk :${CEND}"for i in `echo $DISK_LIST` do echo"$i"count=$((count+1)) done [ $count -gt 1 ] && { echo"${CWARNING}This system has at least two free disk, You must manually mount it${CEND}"; exit 0; } fi}# check oscheck_os() { os_release=$(grep"Aliyun Linux release"/etc/issue 2>/dev/null) os_release_2=$(grep"Aliyun Linux release"/etc/aliyun-release 2>/dev/null) if ["$os_release"] && ["$os_release_2"];then if echo"$os_release"| grep"release 5">/dev/null 2>&1;then os_release=aliyun5 modify_env fi fi}# install ext4modify_env() { modprobe ext4 yum -y install e4fsprogs}# fdisk ,formating and create the file systemfdisk_fun() {fdisk -S 56 $1 << EOFnp1wqEOFsleep 5mkfs.ext4 ${1}1}# make directorymake_dir() { echo"${CMSG}Step 4.Begin to make directory${CEND}"[ -d"$MOUNT_DIR"] && mv ${MOUNT_DIR}{,_bk} mkdir -p $MOUNT_DIR echo"$MOUNT_DIR">> $TMP1}# config /etc/fstab and mount devicemain() { for i in `echo $DISK_LIST` do echo echo"${CMSG}Step 3.Begin to fdisk free disk${CEND}"[ -n"`df -h | grep ${i}1`"] && { echo"${CFAILURE}The ${i}1 already mount${CEND}"; echo; exit 0; } fdisk_fun $i > /dev/null 2>&1 echo echo"${i}1">> $TMP2 done make_dir > $LOCKfile paste $TMP2 $TMP1 > $LOCKfile echo echo"${CMSG}Step 5.Begin to write configuration to /etc/fstab and mount device${CEND}"while read a b do [ -z"`grep ^${a} $FSTAB_FILE`"-a -z"`grep ${b} $FSTAB_FILE`"] && echo"${a} $b ext4 defaults 0 0">> $FSTAB_FILE done < $LOCKfile mount -a echo}# start scriptecho"${CMSG}Step 2.Begin to check free disk${CEND}"#service mysqld stop#mv /data /rootcheck_oscheck_diskmaindf -h#mv /root/data/* /data#service mysqld startrm -rf $LOCKfile $TMP1 $TMP2

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:爱蒂网

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章