我怎样才能修复标准错误搞乱了手表的输出的问题?

我怎样才能修复标准错误搞乱了手表的输出的问题?

具体来说,我尝试在 CentOS 和 Fedora14 上运行以下命令(两者存在同样的问题)

watch sudo jmap -heap 31945

但是,在多次调用 jmap 之后,有几行标准错误会导致输出混乱:

Attaching to process ID 31945, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 14.2-b01

如果我运行,这些行将被删除:

sudo jmap -heap 31945 2> /dev/null

但是,如果我尝试:

watch sudo jmap -heap 31945 2> /dev/null

然后删除了太多的行(实际输出的许多行都被删除了)。

为什么会发生这种情况?有办法解决吗?

答案1

您要做的是告诉watch它正在运行的命令应该重定向其输出;您所做的是从其自身重定向输出watch

尝试这个:watch 'sudo jmap -heap 31945 2> /dev/null'

请注意新的引号——这表明watch整个内容是命令,而不仅仅是部分sudo jmap -heap 31945,因此watch仍然能够使用标准错误本身(我怀疑这是导致输出行“丢失”的原因)。

相关内容