linux – “监视”命令中的清除屏幕
在使用watch命令监视程序完成之前,我通常从同一个
shell运行很多程序. (我稍微过滤了ps命令,但这个例子比较简单.)
sleep 10 && for i in {1..100}; do echo $i; done & watch -n 5 ps aux watch命令清除终端,以便命令输出清晰且没有混乱. 当另一个程序输出例如示例中的echo语句时,结果有点奇怪.它打印奇怪,结果似乎取决于输出的大小.即使watch应该重新运行“ps aux”命令,它也不会覆盖“echo”命令的输出. 是否有这样的东西会阻止其他程序的输出覆盖手表输出? watch -n 5 ClearScreenSomehow && ps aux 解决方法
我不知道是否有一种简单的方法可以做到这一点.直到有人提出一个,这是一个复杂的方法来做到这一点:
将原始案例视为控件: #delayed print to clutter up watch later bash -c 'sleep 10; echo ASDF' & #watch dummy command,observe cluttering watch -n1 'ls -la |head -25' 我的方法是劫持所有可能使窗口混乱的进程,并将其输出抛出到/ dev / null的深渊中. 重定向已在运行的进程的输出的标准方法是using bash -c 'sleep 10; echo ASDF' & #sudo gdb -p "$!" -batch -ex 'p dup2(open("/dev/null",0),1)' -ex 'p dup2(open("/dev/null",2)' -ex 'detach' gdb -p "$!" -batch -ex 'p dup2(open("/dev/null",2)' -ex 'detach' watch -n1 'ls -la |head -25' 哪里$!是最后生成的进程的pid,这正是我们在示例中所需要的.在您的实际用例中,您必须使用给定shell的loop over every 另请注意,对于您自己的进程,gdb调用应该没有sudo,但由于某些原因(源于某些配置),它只允许我使用sudo执行它.你的旅费可能会改变. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |