如何通过 ssh 连接发送 SysRq 命令?

如何通过 ssh 连接发送 SysRq 命令?

我正在开发基于 BeagleboneBlack 的自定义板,
最近我正在调试系统挂起问题,我可以使用 访问调试控制台minicom,并且我可以使用组合键Ctrl+ A、 F ` 启用日志。

然而,所有生产设备都没有调试控制台。我将无法通过 来连接它minicom,但是我将通过 ssh 连接进行访问。

现在,我想知道是否有任何方法可以通过 ssh 连接发送 SysRq 密钥,

在设备正常工作中,如果我使用echo h > /proc/sysrq-trigger输出打印在调试(或串行)控制台(minicom)上,而不是打印在 ssh.:( 上,
有什么方法可以将此输出发送到 ssh 终端吗?

我知道我所问的问题有点不可能,因为如果系统锁定 ssh 连接将不活动。但以防万一,如果连接处于活动状态,那么我想知道是否有任何方法可以发送 SysRq 密钥。

答案1

您无法直接获取要显示到 ssh 终端的响应,但内核的输出会记录在dmesg(通常/var/log/messages也是如此);这样您就可以echo h > /proc/sysrq-trigger; dmesg | tail看到打印的内容。

答案2

SysRq direct 功能仅适用于控制台。

在标准“VGA”控制台上,这是与 Alt 和“命令”结合使用的文字键 SysRq(有时标记为“打印屏幕”)。

在串行控制台上,可以通过 BREAK 信号访问它。

但是,通过 SSH 无法直接访问 SysRq,您必须使用该/proc/sysrq-trigger文件。

内核文档更详细地介绍了 SysRq 以及不同的组合键如何在不同的平台上工作:https://www.kernel.org/doc/Documentation/sysrq.txt

由于 SysRq 输出是由内核生成的,因此它会进入环形缓冲区。这可以通过 阅读dmesg

另外,取决于您如何设置操作系统,syslog或者rsyslog可以将内核输出定向到文件,例如rsyslog

$ModLoad imklog
kern.*    -/var/log/kernel

systemd基于系统的系统可以通过命令公开此日志journalctl

相关内容