我创建了一个脚本,用于在 CPU 负载达到 90% 时重启系统。但出于某些测试目的,我将最大 CPU 利用率的值更改为 0.7%。
该脚本被编程来运行系统重启。
现在服务器从未在线 - 它不断重启。
我的脚本:
#!/bin/bash
dstat| awk '{ if (int($1)>0.7) {
i=i+1; {
print i, $1
}
}
if (int($1)>0.7) {
j=j+1;
}
if (j>2) {
print "system reboot";
cmd="sudo reboot";
system(cmd)
}
}'
注意:该脚本被编程为使用 crontab 在重启时运行:
@reboot /bin/bash /ubuntu/home/reboot.sh
所以我无法使用 SSH 登录。因为系统不断重新启动。
我的服务器是 AWS ec2 实例
我曾尝试通过 aws 控制台传递用户数据。
sudo apt-get purge dstat
cd /ubuntu/home && sudo rm reboot.sh
sudo /etc/init.d/cron stop
但它不起作用。
因此,我将非常感激任何可以恢复我的实例的可能方法。
答案1
- 停止实例,并查看 EBS 磁盘(记下挂载点)
- 分离故障实例 (EBS) 的硬盘
- 启动一个新的实例(Ubuntu 18.04、RHEL,您感觉更舒服的那个......)
- 将故障磁盘附加到新实例。
- 将文件系统挂载到
/mnt
(例如) - 删除您已添加到 CRONTAB 的 crontab 规则(在
/etc/crontab/
...中) - 分离 EBS 磁盘
- 使用相同的挂载点再次连接到故障机器
- 像往常一样启动旧机器;cron将被禁用
- 删除你用来更改 FS 的机器
这是一种常见的故障模式,将发生故障的 FS 分离到另一台机器,修复阻止其启动的任何问题,然后将其重新连接到旧主机。
希望它能解决你的问题。