【问题标题】:How to crash a Linux VM?如何使 Linux 虚拟机崩溃?
【发布时间】:2023-04-07 15:15:02
【问题描述】:

我创建了一个监控系统,当虚拟机无响应或内部崩溃时它会重新启动它。我想模拟虚拟机崩溃,所以我可以测试我的监控设置。我尝试了叉形炸弹,但它没有崩溃。我还尝试在无限循环中调用进程。

需要一种干净的方式来成功地使 VM 崩溃,而不会产生任何后续后果。

【问题讨论】:

  • 在 linux 终端上试试这个,我认为它应该可以工作.... echo c > /proc/sysrq-trigger 并告诉我它是否有效
  • @AniMenon 是的,绝对不要这样做,有些会破坏你的虚拟机而不仅仅是崩溃。
  • 如果监控系统使用TCP,则只需关闭VM中的网络即可。类似service networking stopifconfig eth0 down
  • @anishsane 监控是通过 ping 测试虚拟机来完成的。

标签: linux bash crash


【解决方案1】:
  1. 这会导致内核崩溃。 Linux:

    echo c > /proc/sysrq-trigger

    更多信息here

    在 Linux 上,您可能必须先echo 1 > /proc/sys/kernel/sysrq 才能使用

    echo c > /proc/sysrq-trigger

  2. 我知道你已经用过叉子炸弹我只是再写一次以供参考,或者你也可以再试一次:

    :(){ :|:& };:

  3. 将以下代码编译成一个模块并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 测试是否是正确的方法,或者不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多