磁盘分区脚本案例
㈠ 求教,如何使用shell脚本实现自动分区
用fdisk 的脚本自动执行可以参考如下shell脚本:
#makepartition
ddif=/dev/zeroof=/dev/mmcblk1bs=1024count=1024
fdisk/dev/mmcblk1<<EOF
n
p
1
2048
+100M
n
p
2
t
1
c
a
1
w
EOF
㈡ 求一个linux下单个硬盘自动分区,格式化,删除分区并重启的脚本
脚本可以写,但你这个需求会不会有问题?
1、因为是开机后自动执行,执行完成后又自动重启,那么脚本写好后,你电脑就会不停的自动重启,周而复始,而且不好恢复。
2、建立分区、格式化、删除完全没有顺序吗?分区大小是多少?建立多少个分区?
㈢ 请问怎么用脚本给Linux系统分区
代码如下:
#!/bin/bash
#Author: MOS
#Script name: funPart.sh
#Date & Time: 2012-10-10/12:20:53
#Version: 1.0.1
#Description:
# Disk_Mod(){
#使用if匹配模式,使用for循环判断是否存在,如果有,则取其绝对路径,跳出循环,如果不匹配或文件不存在,跳出函数,返回66
if [[ -n $1 && $1 =~ "/dev/sd[a-z]" ]];
then local Darray=(ls /dev/sd[a-z])
for i in ${Darray[*]};do
[[ "$i" == "$1" ]] && Sd=$i && break
done
else
return 66
fi
#当匹配成功,进入选择,告诉用户,是否继续,输错的话进入无限循环,当用户选择Y,则清空目标分区,且跳出while循环
while :;do
read -p "Warning!!!This operation will clean $Sd data. Next=y,Quit=n [y|n]: " Choice
case $Choice in
y)
dd if=/dev/zero of=$Sd bs=512 count=1 &> /dev/null && break || return 67 ;; n)
exit 88 ;;
*)
echo "Invalid choice,please choice again." ;;
esac
done
#使用echo传递给fdisk进行分区,如果此命令失败,则跳转出去,错误值68,需要注意的是,有时候这个返回值很诡异,笔者之前成功与否都是返回的1,后来重启之后,就好了,如果慎重的话,可以对创建的分区,进行判断,不过就需要使用其他工具截取相关字段了,虽有些小麻烦,但无大碍 echo -e "n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n"|fdisk /dev/sdb &> /dev/null || return 68 #格式化之前,让内核重新读取磁盘分区表,值得注意的是,有的系统版本,使用partprobe无效,譬如笔者的环境是rhel5.8,而rhel6.0以后,这个命令就很危险了,而使用partx -a /dev/sdb则效果更好...此项需慎重,如果格式化失败,则告知把失败的分区定义成变量,且跳出函数,并带出错误值69
partprobe Part=fdisk -l /dev/$Sd|tail -2|cut -d" " -f1`
for M in ${Part[*]};do
! mke2fs -j $M &> /dev/null && ErrorPart=$M && return 69
done
return 0
}
#下面代码,调用函数,接收函数返回值,根据返回值进行判断哪里出错。
Disk_Mod $1
Res=$?
[ $Res -eq 0 ] && exit 0
[ $Res -eq 66 ] && echo "Error! Invalid input."
[ $Res -eq 67 ] && echo "Error! Command -> dd <- Faild."
[ $Res -eq 68 ] && echo "Error! Command -> fdisk <- Faild."
[ $Res -eq 69 ] && echo "Error! Command -> mke2fs <- Faild."
如果有什么不懂的话可以去看看《Linux就该这么学》这本书,非常适合新手学习Linux。
㈣ 怎么用shell脚本 对磁盘进行分区管理
用shell脚本基本无法实现。
首先,shell脚本方便管理的方面是比如监控磁盘使用情况,定期删除无用文件等这些工作。而你想要的是扩容,这基本和shell script的使用不怎么沾边。
其次,如果非要说用shell可以实现你想要的功能的话,那就是用script编写一个扩容工具,而直接扩容是有很大的危险性的,所以你写的script要很完善。
最后,综上述,干嘛不直接上网down一个扩容工具?