2016-03-27 74 views
0

运行一个Linux终端,我有一个长期运行的后台进程,它会不时产生终端输出来通知我日志的变化。由于它在后台,我希望能够运行它并继续在终端上工作。然而,只要我输入时输出tail,输出就会在我已经在该行输入的任何文本之后插入,并且我必须放弃该行并重新开始。例如,键入abcdefghijklmnop,与Log Updated!一个tail消息给出:有没有办法阻止背景输出在Linux终端中分解输入?

[email protected]:~$ abcdefghijklmLog Updated!    
nop 
-bash: abcdefghijklmnop: command not found 

有什么办法来管tail输出打印,同时仍保留我的半写的输入线? Bash在某种程度上可以区分我输入的内容和输出的内容,因此有一种保存的输入缓冲区 - 是否有一种方法可以让tail擦除已写入的字符,然后将这些字符打印到标准中输入?

+0

在单独的终端(窗口)中运行它? – wildplasser

+0

绝对有可能,但然后通知不是有用的或直接的,除非我通过'sed'添加“\ a”来发出音频提示,这并不总是可取的。当然,当然不会只是使用另一个终端的世界末日,但我想我不管问什么。 – HiggstonRainbird

+0

@HiggstonRainbird不使用系统通知的原因是什么?那些窗口管理员,而不是污染终端?例如在侏儒3中,他们甚至会坚持在右下角,所以即使你休息一下,也不可能错过它们。 –

回答

0

tail不会做你在问什么,但暗示sed是有用的。如果在screen中运行,并且tail进程正在另一个窗口中运行(并通过sed管道将\a ASCII BEL附加到每行的末尾),则在另一个窗口中看到BEL时,将显示screenwill notify you in its status line

我在一些构建脚本中使用它来提醒我何时完成(部分交互式)任务。

如果您通过ssh(无GUI)连接到执行该工作的计算机,则窗口管理器对此类事物的用处不大。

+0

这正是我所需要的 - 我通过'ssh'连接,这将让我监视它而不会干扰我的输入线。实际上,我可能会使用分屏功能而不是通知,但无论哪种方式,“屏幕”或“tmux”都可以使用。 – HiggstonRainbird

相关问题