如何使 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 stopifconfig 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 虚拟机崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

linux初学者-虚拟机联网篇

如何将linux虚拟机和主机之间连接 详细_0_3

linux(真机作为路由器使虚拟机上网)

如何在linux中安装VMwareTools

如何解决虚拟机不能启动的问题

在虚拟机中使用ubuntu,如何使虚拟机中的ubuntu上网