#!/bin/bash#%-6s -m : Check /proc/meminfo MemTotal size\n\#%-6s -man n: Set max reboot number as n,\n\helpinfo(){printf "Usage: ./$PROGRAM [ -max n | -interval n ]\n\%-14s default is the test would continue until user stop\n\%-6s -interval n: Set wait time after system power on,\n\%-15s default is 5 mins\n\%-15s -V echo current revision \n"}finish(){ helpinfo exit $1}VERSION_ECHO(){# VERSION=V1.0#ADD PRINT HELP INFO BY ALAN 20191126 VERSION=V1.1 echo $VERSION exit 0}start(){#start reboot, if the config file and reboot file exsit, mean is in reboot if [ -f $CONFIG ] && [ -f $WARMBOOTSH ] then . $CONFIG $WARMBOOTSH exit $? fi}stop(){#stop reboot test -f $CONFIG && . $CONFIG crontab -r printf "Test stop at %s\n" "`date`" >>$LOG rm -rf $CONFIG exit 0}error(){ echo "$@" 1>&2 finish 1}PROGRAM=`basename $0`#echo "$PROGRAM"#readWAIT_TIME=5WARMBOOT_PATH=`pwd`/$0WARMBOOT_PARENT_FD=${WARMBOOT_PATH%/*}WARMBOOTSH=$WARMBOOT_PARENT_FD/warmboot.sh#echo "$WARMBOOT_PARENT_FD"#readCONFIG=$WARMBOOT_PARENT_FD/warmboot/confCOUNTFILE=$WARMBOOT_PARENT_FD/RebootResult/countLOGFILE=`date +%Y%m%d%H%M%S`LOG=$WARMBOOT_PARENT_FD/RebootResult/$LOGFILE/warmboot.logFAILLOG=$WARMBOOT_PARENT_FD/RebootResult/$LOGFILE/faillog.logREBOOT=/sbin/rebootmkdir -p $WARMBOOT_PARENT_FD/warmbootmkdir -p $WARMBOOT_PARENT_FD/RebootResultmkdir -p $WARMBOOT_PARENT_FD/RebootResult/$LOGFILE#mv /root/warmboot/warmboot.log /opt/RebootResult/$LOGFILE 2>/dev/nullwhile test $# -gt 0do case $1 in# -m | -memory | --m | --memory )# CHECK_MEM=yes# OLD_MEMORY_FILE=/opt/old_meminfo# cat /proc/meminfo | head -1| awk '{print $2}' > $OLD_MEMORY_FILE# ;; -max | --max | -MAX | --MAX ) shift test $1 -ge 0 && MAX_CYCLE=$1 ;; -interval | --interval ) shift test $1 -ge 1 && WAIT_TIME=$1 ;; -V | --version ) VERSION_ECHO ;; stop) stop ;; start) start ;; -*) error "Unrecognized options: $1" ;; *) break ;; esac shiftdoneecho "RunTime: " 0 " ErrorTime:" 0 > $COUNTFILEprintf "Start system reboot test at %s\n" "`date`">$LOGecho "PROGRAM=`basename $0`" >$CONFIGtest "$CHECK_MEM" = "yes" && echo "CHECK_MEM=$CHECK_MEM" >> $CONFIGtest ! -z "$OLD_MEMORY_FILE" && echo "OLD_MEMORY_FILE=$OLD_MEMORY_FILE" >>$CONFIGtest ! -z "$MAX_CYCLE" && echo "MAX_CYCLE=$MAX_CYCLE" >> $CONFIGecho "WAIT_TIME=$WAIT_TIME" >> $CONFIGecho "COUNTFILE=$COUNTFILE" >> $CONFIGecho "WARMBOOT_PARENT_FD=$WARMBOOT_PARENT_FD" >> $CONFIGecho "WARMBOOT_PATH=$WARMBOOT_PATH" >>$CONFIGecho "WARMBOOTSH=$WARMBOOTSH" >> $CONFIGecho "CONFIG=$CONFIG" >> $CONFIGecho "LOG=$LOG" >> $CONFIGecho "FAILLOG=$FAILLOG" >> $CONFIGecho "REBOOT=$REBOOT" >> $CONFIGcat >$WARMBOOTSH<<"EOF"#!/bin/shCUSTOMCONF=/etc/gdm/CONFIG_PATH=$0CONFIG_PATH=${CONFIG_PATH%/*}CONFIG=${CONFIG_PATH}/warmboot/conf#echo "[$1] [$(cat $CONFIG)]" > ~/Desktop/1.txt #exit 1#CONFIG=$WARMBOOT_PARENT_FD/warmboot/conf#load configif [ ! -f "$CONFIG" ]then echo -e "\033[31;5m**Error**: Can't find $CONFIG, test abort \033[0m" exit 1fi. "$CONFIG"count=`cat $COUNTFILE | head -1| awk '{print $2}'`error_n=0error_mem=`cat $COUNTFILE | head -2| awk '{print $4}'`if [ ! -z "$MAX_CYCLE" ] && [ "$MAX_CYCLE" -gt 0 ] && [ "$count" -eq "$MAX_CYCLE" ]then echo "Test Finish" `date` >> $LOG; cd $CUSTOMCONF #sed -i '4,7d' custom.conf crontab -r exit 0ficount=$(($count + 1))printf "No. %d %s" "$count" "`date`" >> $LOG#memory size checkingif [ "$CHECK_MEM" = "yes" ]then old_meminfo=`cat $OLD_MEMORY_FILE` new_meminfo=`cat /proc/meminfo | head -1| awk '{print $2}'` if [ "$old_meminfo" = "$new_meminfo" ] then printf " Memory check pass" >>$LOG else error_n=$(($error_n+ 1)) error_mem=$(($error_mem+1)) printf " memory check fail" >>$LOG printf "**ERROR** No. %d Memory check fail %s\n\*Total memory size must be %s\n \------------------------------\n\*but right now is %s\n\n" $count "`date`" "$old_meminfo" "$new_meminfo" >>$FAILLOG fifiprintf "\n" >>$LOGecho "RunTime: " $count " ErrorTime:" $error_mem > $COUNTFILEEOFcat>>$WARMBOOTSH<<"EOF"echo "Start reboot..."eval `eval echo $REBOOT`exit 0EOFchmod a+x $WARMBOOTSHecho "creating crontab service..."echo "*/$WAIT_TIME * * * * $WARMBOOTSH \"${WARMBOOT_PARENT_FD}\"">$WARMBOOT_PARENT_FD/warmboot/crontabsetcrontab $WARMBOOT_PARENT_FD/warmboot/crontabsetservice cron restart echo -e "System will reboot in \033[31;5m$WAIT_TIME\033[0m