前言
脚本允许用户指定重启的次数和重启间隔时间,并自动生成相应的定时任务。通过使用这个脚本,系统管理员可以轻松地设置重启测试。每次重启操作都会被记录下来,以便用户随时了解测试情况。
一、脚本
#!/bin/bash
if [ "$1" = "exit" ]; then
# 如果传入参数为 "exit",则删除定时任务并退出脚本
sudo sed -i '/.\/rts.sh/d' /etc/crontab
echo -e "\e[1;32m[关闭自动重启脚本]\e[0m"
exit 0
else
# 获取用户输入的重启次数和重启间隔时间
read -p "请输入自动重启的次数: " timesLeft
read -p "请输入重启间隔的时间(分钟): " interval
# 日志文件保存在当前脚本所在位置
logFile=$(pwd)/reboot.log
# 创建并写入重启次数到文件
echo "timesLeft=$timesLeft" | sudo tee /opt/times.left >/dev/null
# 创建脚本文件并写入内容
cat <<EOF | sudo tee /opt/rts.sh >/dev/null
#!/bin/bash
source /opt/times.left
if [ \$timesLeft -gt 0 ]; then
echo "还剩余\$timesLeft次重启" >> ${logFile}
date >> ${logFile}
echo >> ${logFile}
echo "timesLeft=\$((timesLeft-1))" > /opt/times.left
reboot
else
sed -i '/.\/rts.sh/d' /etc/crontab
rm -f /opt/rts.sh
rm -f /opt/times.left
chown \$USER:\$USER ${logFile}
fi
EOF
# 设置脚本文件权限
sudo chmod +x /opt/rts.sh
# 如存在者删除,并添加新的定时任务
sudo sed -i '/.\/rts.sh/d' /etc/crontab
cronjob="*/$interval * * * * root /bin/bash /opt/rts.sh"
sudo echo "$cronjob" | sudo tee -a /etc/crontab >/dev/null
echo -e "\e[1;32m[自动重启脚本配置完成]\e[0m"
echo -n "请稍候,系统即将重启中……"
read
fi