西部数码硬盘扩容脚本.
#! /bin/bash
#by 2016/1/26
#v2改进:
#(1)gbk和utf8自适应,不会乱码
#(2)判断如果是ubuntu跳过启动/停止wdcp常用服务
#v3改进:
#兼容centos7
#功能:输出中文自适应编码,防止乱码
#前提:本shell文件必须以utf8编码的形式存储
#使用:#myi18n "中文字符"
myi18n()
{
if [[ "$#" -ne 1 ]]
then
echo "demo: myi18n infotest"
fi
if [[ $LANG =~ [Uu][Tt][Ff] ]] #如果系统是utf8编码
then
echo "$1"
else #如果系统是gbk编码
echo "$1" | iconv -f utf-8 -t gbk
fi
}
#系统类型
isUbuntu=`uname -a |grep -iq "ubuntu" && echo "yes" || echo "no"`
isel7=`uname -a |grep -iq "el7" && echo "yes" || echo "no"`
#取得home分区的设备名
home_part=`df -vh |grep "www" | awk '{print $1}'` #结果是类似于/dev/vdb1
home_dev=`echo $home_part | sed 's/[0-9]$//'` #结果是类似于/dev/vdb
#停止wdcp常用服务
function stopsv(){
service httpd stop
service wdapache stop
service mysqld stop
}
#启动wdcp常用服务
function startsv(){
service mysqld start
service httpd start
service wdapache start
/www/wdlinux/nginx-1.0.12/sbin/nginx -s stop
/www/wdlinux/nginx-1.0.12/sbin/nginx
}
#如果不是ubuntu,停止wdcp常用服务
if [[ $isUbuntu == "no" && $isel7 == "no" ]]
then
stopsv
fi
#安装fuser
if ! which fuser > /dev/null
then
if [[ $isUbuntu == "yes" ]];then
apt-get -y install fuser
elif [[ $isel7 == "yes" ]];then
yum -y install psmisc
else
yum -y install fuser
fi
fi
#取消挂载home分区
fuser -m /www -k
umount /www
if [[ $? -ne 0 ]] #如果不能直接取消挂载 或 不存在/home分区
then
echo;echo;
myi18n "取消/home挂载失败,程序自动退出,请手动操作扩展"
exit 1
fi
#安装parted
if ! which parted > /dev/null
then
if [[ $isUbuntu == "yes" ]]
then
apt-get -y install parted
else
yum -y install parted
fi
fi
#备份分区表
parted $home_dev print > /parted.txt
if [[ ! -e /parted.txt ]]
then
echo;echo;
myi18n "不能生成分区表备份文件,程序自动退出,请手动操作扩展"
exit 1
fi
if [[ $isel7 == "yes" ]];then
if [[ `cat /parted.txt | wc -l` -ne 9 ]];then
echo;echo;
myi18n "分区表备份文件内容异常,程序自动退出,请手动操作扩展!"
exit 2
else
startLOC=`parted $home_dev print | sed -n '8p' | awk '{print $2}'`
fi
elif [[ `cat /parted.txt | wc -l` -ne 8 ]];then
echo;echo;
myi18n "分区表备份文件内容异常,程序自动退出,请手动操作扩展!"
exit 2
else
startLOC=`parted $home_dev print | sed -n '7p' | awk '{print $2}'`
fi
#开始扩展
parted $home_dev rm 1
yes|parted $home_dev mkpart p $startLOC 100%
echo;echo;
myi18n "如果硬盘较大,时间可能会很长,请耐心等待!!"
echo;echo;
resize2fs -f $home_part
#重新挂载
mount -a
df -vh
#如果不是ubuntu,启动wdcp常用服务
if [[ $isUbuntu == "no" && $isel7 == "no" ]]
then
startsv
fi
echo;echo;
myi18n "扩展home分区完成"
exit 0
根据扩容挂载路径修改相应配置.