简单实现嵌入式系统启动扫描关键项shell脚本

#!/bin/sh
#ybootv5 20140417
#修改内容
#1.更改变量定义路径myApBoxSrv,myyfps,改为/root/yst
#2.2号U盘检测服务未启动后是否需要手动调用启动
#3.检测ystboot逻辑放到最后
#4.考虑占用率过高时,删除LOG下所有文件会不会造成系统故障?若不删除全部,使用何种逻辑判断
#5.sysbk更改为ystbk
#6.log内增加e2fsck结果显示
#7.加入时间判断逻辑,若无设置日期,则自动设置,若设置过,则不再重复设置(不起作用?)
#8.增加启动mysql,lighttpd服务功能逻辑
#9.改为只读后,修改mylog位置,指向/mntubi/tmp/yboot.log
#10.2号U盘增加逻辑,恢复.optware文件夹内容

#ybootv6 20140421
#1.修改变量定义路径myApBoxSrv,myyfps,
#2.暂时定义增加mkdir mycode myetc mybin功能
#3.增加新硬盘检测mysql_hd文件夹
#4.将.optware文件夹所有内容拷贝至/opt文件夹中,修改调用
#5.修复无法启动mysql问题,将/opt/var/lib/mysql 指向/mntubi/mysql
#6.增加log1判断逻辑,若不存在则新建/mntubi/var/log1,解压lighttpd.tar至log1下

#ybootv7 20140423
#1.增加对ystboot的判断,1号则调用ystboot.fox,2号则调用ystboot
#2.修复无法再次进行e2fsck修复的问题

#ybootv8 20140423
#1. 改进分区扫描过程,使用e2fsck -apf /dev/sda2,节约时间
#2.增加分区扫描坏区标志文件,用于启动分区坏区扫描 
#3.增加硬盘扫描文件系统标志文件,用于启动硬盘文件系统扫描
#4.老李提供前面板时间功能获取。可规避无法e2fsck问题,可删除日期设置命令

#日期判断逻辑(已删除)


myApBoxSrv="/bin/ApBoxSvr"
myyfps="/bin/yfps"
myyst="/mntubi/yst/bin/"
mycode="/mntubi/yst/code/"
myetc="/mntubi/yst/etc/"
mybin="/mntubi/yst/bin/"
nas2ystboot="/root/yst/etc/init.d/ystboot"
nas1ystboot="/root/yst/etc/init.d/ystboot"
mydata="/mntsd2/data/"
mysd2log="/mntsd2/log/"
mysda="/mnt/sda"
mysql_hd="/mnt/sda/mysql_hd"
mysql="/mntubi/mysql"
mylog1="/mntubi/var/log1"
nas1=0
nas2=0

#扫描标志文件变量
sd2mark="/mntubi/tmp/sd2mark.log"
hdiskmark="/mntubi/tmp/hdiskmark.log"

rm -rf /mntubi/tmp/yboot.log
touch /mntubi/tmp/yboot.log

mylog="/mntubi/tmp/yboot.log"
echo "******rebuild yboot.log******">>$mylog
echo "**********check bootting sequences**********">>$mylog
#通过IP地址确认是几号U盘
testing=$(head -87 /etc/rc.conf |tail -1 |awk -F '.' '{print int($4)}')
if [ "$testing" = 30 ];
then
     nas1=1
     echo "The system use the first boot">>$mylog
     echo $testing>>$mylog
fi

if [ "$testing" = 31 ];
then
     nas2=1
     echo "The system use the second boot">>$mylog
     echo $testing>>$mylog
fi

#检查ApBoxSrv存在性
echo "******check ApBoxSrv******">>$mylog

if [ $nas1 != "0" ] ;then
if [ ! -f "$myApBoxSrv" ]; then
   echo "error921:ApBoxSvr is not exists">>$mylog
   yfps -e 921
else
   echo "ApBoxSvr is exists">>$mylog
   /bin/ApBoxSvr -d
exit 
fi
fi

#检测yfps存在性
echo "********check yfps*********">>$mylog
if [ ! -f "$myyfps" ]; then
   echo "error920:/bin/yfps:file is not exists">>$mylog
   yfps -e 920
exit
else 
   echo "yfps is exists">>$mylog
fi

#获取前面板时间
#currenttime=$(yfps -r '$$$C' | grep RTC2GET|awk -F ':' '{print $2}')
echo "set currentime......"
date $(yfps -r '$$$C' | grep RTC2GET|awk -F ':' '{print $2}')
echo $date
echo "set currentime complete"

echo "****nas1=****">>$mylog
echo $nas1>>$mylog
echo "****nas2=****">>$mylog
echo $nas2>>$mylog
echo "*************">>$mylog

#检查etc code bin文件夹存在性,不存在则恢复
echo "********check directory*********">>$mylog
if [ ! -d "$mycode" ]||[ ! -d "$myetc" ]||[ ! -d "$mybin" ];then
echo "error922:No such directory.">>$mylog
yfps -e 922
echo "Restore from ystbk...">>$mylog
else
echo "**directories are already exists*">>$mylog

#恢复接口
fi

#怎么调用?
#对U盘sdx2进行检测,占用率检测
if [ $nas2 != "0" ] ;then
echo "*****e2fsck /dev/sdb2*************">>$mylog
#分区启动坏区扫描逻辑
if [ -f "$sd2mark" ]; then
   echo "e2fsck -acp /dev/sdb2....">>$mylog
   yfps -s 202
   e2fsck -acp /dev/sdb2
fi
chksdb2=$(e2fsck -apf /dev/sdb2)
echo $chksdb2>>$mylog
echo "e2fsck /dev/sdb2 complete!!">>$mylog
echo "***********mounting /dev/sdb2************">>$mylog
mount /dev/sdb2 /mntsd2
cd /mntsd2
used=$(df |grep mntsd2 |grep -v grep |awk '{print int($5)}')
echo "the mntsd2 used">>$mylog
echo $used>>$mylog
echo "***************">>$mylog
  if [ ! -d "$mydata" ]; then
     mkdir "$mydata"
     echo "******build /mntsd2/data/ complete***">>$mylog
  else 
     echo "******/mntsd2/data/ directory already exists***">>$mylog
  fi
  if [ ! -d "$mysd2log" ]; then
     mkdir "$mysd2log"
     echo "******build /mntsd2/log/ complete****">>$mylog
  else 
     echo "******/mntsd2/log/ diif [ ! -d "$mysda" ];thenrectory already exists***">>$mylog
  fi
echo "****check sd2 occupancy rate****">>$mylog
  if [ $used -gt 80 ];then
     cd /mntsd2/log
     rm -rf *
     echo "occupancy rate is over 80%, auto clear useless files...">>$mylog
     echo "operations complete.">>$mylog
     echo "check occupancy rate again">>$mylog
used1=$(df |grep mntsd2 |grep -v grep |awk '{print int($5)}')
     if [ $used1 -gt 95 ];then
        echo "error926:High occupancy rate">>$mylog
        yfps -e 926
     exit
     fi
   else
       echo "Complete!low occupancy rate in mntsd2: enouth free space">>$mylog
   fi
cd /
fi

if [ $nas1 != "0" ];then
echo "*****e2fsck /dev/sda2*************">>$mylog
#分区启动坏区扫描逻辑
if [ -f "$sd2mark" ]; then
   echo "e2fsck -acp /dev/sda2....">>$mylog
   yfps -s 201
   e2fsck -acp /dev/sda2
fi
chksda2=$(e2fsck -apf /dev/sda2)
echo $chksda2>>$mylog
echo "e2fsck /dev/sda2 complete!!">>$mylog
echo "***********mounting /dev/sda2************">>$mylog
mount /dev/sda2 /mntsd2
cd /mntsd2
echo "****check mntsd2 occupancy rate****">>$mylog
used=$(df |grep mntsd2 |grep -v grep |awk '{print int($5)}')
echo "the mntsd2 used">>$mylog
echo $used>>$mylog
echo "***************">>$mylog
  if [ ! -d "$mydata" ]; then
     mkdir "$mydata"
     echo "******build /mntsd2/data/ complete***">>$mylog
  else 
     echo "******/mntsd2/data/ directory already exists***">>$mylog
  fi
  if [ ! -d "$mysd2log" ]; then
     mkdir "$mysd2log"
     echo "******build /mntsd2/log/ complete****">>$mylog
  else 
     echo "******/mntsd2/log/ directory already exists***">>$mylog
  fi
echo "****check sd2 occupancy rate****">>$mylog
  if [ $used -gt 80 ];then
     cd /mntsd2/log
     rm -rf *
     echo "occupancy rate is over 80%, auto clear useless files...">>$mylog
     echo "operations complete.">>$mylog
     echo "check occupancy rate again">>$mylog
used1=$(df |grep mntsd2 |grep -v grep |awk '{print int($5)}')
     if [ $used1 -gt 95 ];then
        echo "error927:High occupancy rate in mntsd2">>$mylog
        yfps -e 927
     exit
     fi
   else
       echo "Complete!low occupancy rate in mntsd2: enouth free space">>$mylog
  fi
cd /
fi

#mntubi占用率检测
echo "****check mntubi occupancy rate****">>$mylog
usedubi=$(df |grep mntubi |grep -v grep |awk '{print int($5)}')
echo "the mntubi used">>$mylog
echo $usedubi>>$mylog
echo "***************">>$mylog
   if [ $usedubi -gt 80 ];then
     cd /mntubi/var/log
     rm -rf *
     echo "occupancy rate is over 80%, auto clear useless files...">>$mylog
     echo "operations complete.">>$mylog
     echo "check occupancy rate again">>$mylog
     usedubi2=$(df |grep mntubi |grep -v grep |awk '{print int($5)}')
     if [ $usedubi2 -gt 95 ];then
        echo "error928:High occupancy rate in mntubi:over 95%!!">>$mylog
        yfps -e 928
     exit
     fi
   else
       echo "Complete!low occupancy rate: enouth free space">>$mylog
   fi
cd /
#fi
#mntsda占用率检查
echo "***********check /mnt/sda************">>$mylog
if [ ! -d "$mysda" ];then
   mkdir "$mysda"
   echo "******* build /mnt/sda compliete************">>$mylog
fi
if [ $nas1 != "0" ] ;then
echo "System using the first boot,ignore this checking...">>$mylog
fi
if [ $nas2 != "0" ] ;then
#硬盘启动扫描文件系统逻辑
if [ -f "$hdiskmark" ]; then
   echo "e2fsck -apf /dev/sda1 ....">>$mylog
   yfps -s 203
   e2fsck -apf /dev/sda1
fi
echo "******check mounting sda1******">>$mylog
mount /dev/sda1 /mnt/sda
mountsdb=$(df |grep sda1 |grep -v grep |awk '{print int($5)}')
   if [ ! $mountsdb ];then
      echo "error929:can not mount sda1">>$mylog
      yfps -e 929
   exit
   else 
      echo "****check hardisk occupancy rate****">>$mylog
      echo "the hardisk used">>$mylog
      echo $mountsdb>>$mylog
      echo "***************">>$mylog
   fi
   if [ $mountsdb -gt 98 ];then
      echo "error930:High occupancy rate in sda1">>$mylog
      yfps -e 930
      echo "Please Contact the support personnel to increase hardisk capacity">>$mylog
   fi
fi

#2号U盘检测是否新硬盘
echo "**************new hardisk checking*****">>$mylog
#实现方法,检测不存在则拷贝
if [ $nas2 != "0" ];then
   if [ ! -d "$mysql_hd" ];then
   mkdir "$mysql_hd"
   echo "******* build /mnt/sda/mysql_hd compliete************">>$mylog
   echo "cp mysql database beginning....">>$mylog
   cp -r /opt/var/lib/mysql_hd/* /mnt/sda/mysql_hd
   echo "cp mysql database complete!">>$mylog
   else 
   echo "mysql_hd is already exists ">>$mylog
   fi
fi
#2号U盘检测启动后检测服务是否正常运行
echo "***check primary processes*****">>$mylog
if [ $nas1 != "0" ];then
echo "using first boot: jump to next stage....">>$mylog
fi
if [ $nas2 != "0" ];then

#检测/mntubi/mysql文件存在性,不存在则解压
echo "check /mntubi/mysql.....">>$mylog
 if [ ! -d "$mysql" ];then
   echo "/mntubi/mysql is not exists, restoreing....">>$mylog
tar -xvvf /opt/var/lib/mysql.tar -C /mntubi
   echo "restore /mntubi/mysql complete,starting mysql...">>$mylog
 else 
   echo "mysql is exists,stating mysql.....">>$mylog
 fi
/opt/etc/init.d/S70mysqld start

echo "check /mntubi/var/log1....">>$mylog
 if [ ! -d "$mylog1" ];then
   echo "restore /mntubi/var/log1....">>$mylog
   mkdir "$mylog1"
   tar -xvvf /opt/var/lighttpd.tar -C /mntubi/var/log1
   echo "restore /mntubi/var/log1 complete,starting lighttpd...">>$mylog
 else 
   echo "/mntubi/var/log1 is exists,starting lighttpd....">>$mylog
 fi
/opt/etc/init.d/S80lighttpd start
 
service1=$(ps -ef |grep mysqld_safe |grep -v grep |awk '{print int($2)}')
service2=$(ps -ef |grep lighttpd |grep -v grep |awk '{print int($2)}')
echo $service1>>$mylog
echo $service2>>$mylog
   if [ "$service1" = "" ];then
   echo "error924:mysqld cannot normal startup">>$mylog
   yfps -e 924
   exit
   else 
   echo "***mysqld is on running*****">>$mylog
   fi
   if [ "$service2" = "" ];then
   echo "error925:lighttpd cannot Normal startup">>$mylog
   yfps -e 925
   exit
   else 
   echo "***lighttpd is on running*****">>$mylog
   fi 
fi
echo "initing ystboot....">>$mylog

#检测ystboot是否存在,不存在则报错,增加1号2号判断逻辑
echo "********check ystboot*********">>$mylog
if [ $nas1 != "0" ];then
  if [ ! -f "$nas1ystboot" ]; then
    echo "error931:/root/yst/etc/init.d/ystboot is not exists">>$mylog
    yfps -e 931
    exit
  else
     /root/yst/etc/init.d/ystboot
  fi
fi

if [ $nas2 != "0" ];then
  if [ ! -f "$nas2ystboot" ]; then
    echo "error932:/root/yst/etc/init.d/ystboot is not exists">>$mylog
    yfps -e 932
    exit
  else
     /root/yst/etc/init.d/ystboot
  fi
fi


你可能感兴趣的:(简单实现嵌入式系统启动扫描关键项shell脚本)