无法在控制台中或通过重定向读取错误

无法在控制台中或通过重定向读取错误

我所做的:将 Ubuntu Server 20.04.6LTS 安装到 SSD(/sda),额外的驱动器 HDD(/sdb)。有一个额外的 HDD(现在称为 /sdc)是 RAID1。

RAID1:我遵循了概述的想法在这里重置 RAID1在这里更改 RAID1 设备

发生了什么事。我正在使用命令sudo fdisk -l | grep 'Disk /'列出已连接驱动器的详细信息。只要 /sdc 未连接,一切就会按预期运行。

一旦 /sdc 连接,就会在屏幕报告的中间出现一个从终端窗口滚动出来的错误消息。

我尝试过Shift + PgUpShift + PgDown。我尝试过Shift + A然后Esc并且滚动没有发生。

我已尝试过sudo fdisk -l | grep 'Disk /' >001stdout.txt 2>002stderr.txt,但错误并未被捕获到文件中。

我努力了这些建议这些这些这些无济于事。

如果可能的话,我宁愿不使用 Screen 和 tmux。

感谢您的帮助。

答案1

首先确保它确实来自 fdisk。在文本控制台上工作时,你可以核心与程序输出混合的消息 - 它们既不是正在运行的命令的标准输出也不是标准错误输出,而是完全独立的消息源。

[ 12345.678]任何以样式时间戳开头的控制台消息是一条内核消息。尽管最新消息dmesg通常也都会捕获到系统日志(日记或系统日志)中,但是您可以使用 查看最新消息。

我已尝试过sudo fdisk -l | grep 'Disk /' >001stdout.txt 2>002stderr.txt,但错误并未被捕获到文件中。

这不起作用,因为你没有重定向 fdisk 的 stderr – 你只重定向了 stderr'grep'(无论如何它都不会向 stderr 产生任何内容)。管道|仅连接 fdisk 的标准输出,但对其 stderr 1不执行任何操作,后者继续直接进入终端。

要捕获 fdisk 的标准错误,请将重定向在它的旁边:

sudo fdisk -l 2>fdisk_stderr.txt | grep 'Disk /'

为了将重定向应用于整个管道,您需要对命令进行分组:

(sudo fdisk -l | grep 'Disk /') >001stdout.txt 2>002stderr.txt
-or-
{ sudo fdisk -l | grep 'Disk /'; } >001stdout.txt 2>002stderr.txt

1在其他情况下,您可以使用以下任一方式将 stdout 和 stderr 一起通过管道传输:

sudo fdisk -l 2>&1 | grep ... >stdout 2>stderr
-or-
sudo fdisk -l |& grep ... >stdout 2>stderr

但这种方法在这里实际上不起作用,因为您grep会过滤掉错误消息。

相关内容