具体来说,我尝试在 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
仍然能够使用标准错误本身(我怀疑这是导致输出行“丢失”的原因)。