Linux中延迟的内核恐慌

问题描述 投票:0回答:1

对于我们的测试,我们需要通过SSH在远程服务器(VM)上触发内核恐慌:

ssh server "echo c > /proc/sysrq-trigger"

问题是在大多数情况下SSH会话卡住,因为内核恐慌发生在连接断开之前。存在通用连接超时,但这还不够好。

有没有办法延迟恐慌?

我们尝试将以下内容放在服务器上的文件中:

# - panic.sh -

#/bin/bash
sleep 5
echo c > /proc/sysrq-trigger

然后执行它:

ssh server "nohup panic.sh &"

但这没有帮助。 SSH会话等待睡眠结束。

linux bash remote-access panic
1个回答
2
投票

发生这种情况是因为你的脚本保持所有管道都打开,所以ssh必须等待你是否会写更多。

如果你全部关闭它们,ssh知道它不会再收到任何输出并退出:

$ time ssh localhost 'sleep 5 < /dev/null > log 2>&1 &'
real    0m0.171s
user    0m0.013s
sys     0m0.003s

您也可以在睡眠前使用exec命令在脚本中执行此操作:

exec < /dev/null > log 2>&1
© www.soinside.com 2019 - 2024. All rights reserved.