linuxOS_AP05/debian/test/rockchip-test/auto_reboot/auto_reboot.sh
2025-09-26 09:40:02 +08:00

88 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
delay=20
total=${1:-10000}
fudev=/dev/sda
CNT=/data/rockchip-test/reboot_cnt
if [ ! -e "/data/rockchip-test" ]; then
echo "no /data/rockchip-test"
mkdir -p /data/rockchip-test
fi
if [ ! -e "/data/rockchip-test/auto_reboot.sh" ]; then
cp -f /rockchip-test/auto_reboot/auto_reboot.sh /data/rockchip-test/
cp -f /rockchip-test/auto_reboot/auto_reboot_test.sh /etc/init.d/
cp -f /rockchip-test/auto_reboot/rockchip_reboot.service /lib/systemd/system/
ln -sf /lib/systemd/system/rockchip_reboot.service /etc/systemd/system/multi-user.target.wants/
echo $total > /data/rockchip-test/reboot_total_cnt
sync
fi
while true
do
#if [ ! -e "$fudev" ]; then
# echo "Please insert a U disk to start test!"
# exit 0
#fi
if [ -e $CNT ]
then
cnt=`cat $CNT`
else
echo reset Reboot count.
echo 0 > $CNT
fi
echo Reboot after $delay seconds.
let "cnt=$cnt+1"
if [ $cnt -ge $total ]
then
echo AutoReboot Finisned.
echo "off" > $CNT
echo "do cleaning ..."
rm -rf /data/rockchip-test/auto_reboot.sh
rm -rf /data/rockchip-test/reboot_total_cnt
rm -f $CNT
sync
exit 0
fi
echo $cnt > $CNT
echo "current cnt = $cnt, total cnt = $total"
echo "You can stop reboot by: echo off > /data/rockchip-test/reboot_cnt"
sleep $delay
cnt=`cat $CNT`
if [ $cnt != "off" ]; then
sync
if [ -e /var/lib/systemd/pstore/console-ramoops-0 ]; then
echo "check console-ramoops-o message"
grep -q "Restarting system" /var/lib/systemd/pstore/console-ramoops-0
if [ $? -ne 0 -a $cnt -ge 2 ]; then
echo "no found 'Restarting system' log in last time kernel message"
echo "consider kernel crash in last time reboot test"
echo "quit reboot test"
rm -rf /data/rockchip-test/auto_reboot.sh
rm -rf /data/rockchip-test/reboot_total_cnt
sync
exit 1
else
reboot
fi
else
reboot
fi
else
echo "Auto reboot is off"
rm -rf /data/rockchip-test/auto_reboot.sh
rm -rf /data/rockchip-test/reboot_total_cnt
rm -f $CNT
sync
fi
exit 0
done