对于我们的测试,我们需要通过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会话等待睡眠结束。
发生这种情况是因为你的脚本保持所有管道都打开,所以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