如何将控制台/终端视图“附加”到应用程序输出,以便我可以看到它在说什么?
在不终止应用程序的情况下,如何与应用程序输出分离?
通常,如果使用命令行启动健谈的应用程序,则可以看到各种精彩的输出。但是,比方说,我运行的是一个特别健谈的编程程序,例如KINO,并且我想在任何给定的时间查看其输出,而不必通过命令行重新启动它。我不能; 至少我不知道如何。
如何将控制台/终端视图“附加”到应用程序输出,以便我可以看到它在说什么?
在不终止应用程序的情况下,如何与应用程序输出分离?
通常,如果使用命令行启动健谈的应用程序,则可以看到各种精彩的输出。但是,比方说,我运行的是一个特别健谈的编程程序,例如KINO,并且我想在任何给定的时间查看其输出,而不必通过命令行重新启动它。我不能; 至少我不知道如何。
Answers:
这里有一些选择。一种是将命令的输出重定向到文件,然后使用“ tail”实时查看添加到该文件的新行。
另一个选择是在“屏幕”内部启动程序,“屏幕”是一种基于文本的终端应用程序。屏幕会话可以连接和分离,但名义上只能由同一用户使用,因此,如果要在用户之间共享屏幕会话,那就麻烦了。
我想我在这里有一个更简单的解决方案。只需在该/proc
路径下可访问的伪文件系统下,找到一个名称与要查找的PID相对应的目录。因此,如果您正在运行一个ID为1199的程序cd
:
$ cd /proc/1199
然后在fd
下面寻找目录
$ cd fd
这个 fd
目录保存程序正在使用的文件描述符对象(0:stdin,1:stdout,2:stderr),仅tail -f
包含您需要的文件描述符对象(在本例中为stdout):
$ tail -f 1
tail
因为在我的情况下,输出已重定向到另一个进程进行输入,但more
向我显示了当前数据。
more
为我工作。ubuntu 14.04在节点进程上
如何将控制台/终端视图“附加”到应用程序输出,以便我可以看到它在说什么?
关于这个问题,我知道即使在启动进程之前没有启动sceen命令的情况下也可以捕获输出。
尽管我从未尝试过,但我发现了一篇有趣的文章,其中介绍了如何使用GDB(并且无需重新启动过程)。
基本上:
顺便说一句,如果您在i386机器上运行linux操作系统,则评论中提到的是一种更好的工具,可以将输出重定向到新控制台:'retty'。如果是这样,请考虑使用它。