我正在开发基于 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
。