如何使 Linux 虚拟机崩溃?
Posted
技术标签:
【中文标题】如何使 Linux 虚拟机崩溃?【英文标题】:How to crash a Linux VM? 【发布时间】:2016-10-19 02:42:47 【问题描述】:我创建了一个监控系统,当虚拟机无响应或内部崩溃时它会重新启动它。我想模拟虚拟机崩溃,所以我可以测试我的监控设置。我尝试了叉形炸弹,但它没有崩溃。我还尝试在无限循环中调用进程。
需要一种干净的方式来成功地使 VM 崩溃,而不会产生任何后续后果。
【问题讨论】:
在 linux 终端上试试这个,我认为它应该可以工作.... echo c > /proc/sysrq-trigger 并告诉我它是否有效 检查:life-is-a-hack.blogspot.de/2009/08/… @AniMenon 是的,绝对不要这样做,有些会破坏你的虚拟机而不仅仅是崩溃。 如果监控系统使用TCP,则只需关闭VM中的网络即可。类似service networking stop
或ifconfig eth0 down
@anishsane 监控是通过 ping 测试虚拟机来完成的。
【参考方案1】:
这会导致内核崩溃。 Linux:
echo c > /proc/sysrq-trigger
更多信息here
在 Linux 上,您可能必须先echo 1 > /proc/sys/kernel/sysrq
才能使用
echo c > /proc/sysrq-trigger
我知道你已经用过叉子炸弹我只是再写一次以供参考,或者你也可以再试一次:
:() :|:& ;:
将以下代码编译成一个模块并insmod它,你肯定会感到恐慌:
`
static int crash_module_init(void)
printf("crash module starting\n");
int *p = 0;
printk("%d\n", *p);return 0;
static void crash_module_exit(void)
printf("crash module exiting\n");
module_init(crash_module_init);
module_exit(crash_module_exit);
`
【讨论】:
重启后我能恢复我的机器吗?我不想破坏它。 @LovepreetSingh 是的,这只会冻结系统,而不是破坏它... :) 我尝试这样做,即使作为 root 用户,它也会拒绝我的权限。 @LovepreetSingh 你是先做echo 1 > /proc/sys/kernel/sysrq
的吗?
这就是权限被拒绝的原因【参考方案2】:
首先在你的虚拟机中启用SysRq,然后输入以下内容,系统就会崩溃。
echo c > /proc/sysrq-trigger
这里是link!了解详情。
当使用命令“c”按下神奇的 SysRq 组合键时,会导致内核崩溃。
【讨论】:
【参考方案3】:正如 OP 所提到的,他正在使用 ping $VM_IP
来测试 VM 是否已崩溃。因此,如果ping
失败,将被视为 VM 崩溃。因此,触发故障恢复的最小侵入性更改是禁用网络。
service networking stop # Or maybe
service network stop # or
ifconfig eth0 down # Or whatever your interface's name is... eth1/eno1 etc...
【讨论】:
但是我仍然希望模拟一个崩溃/无响应的虚拟机,如果它在崩溃状态时仍然响应 ping,即还想测试 ping 测试是否是正确的方法,或者不是。以上是关于如何使 Linux 虚拟机崩溃?的主要内容,如果未能解决你的问题,请参考以下文章