如何共享正在运行的进程的屏幕输出?

时间:2013-03-14 09:08:50

标签: bash

我有一个程序会运行很长时间,这个程序编辑并在远程服务器上运行。我使用 办公室中的计算机远程连接服务器并运行它。进度显示在我办公室电脑的电脑屏幕上......

我想看看家里的输出,如何捕捉办公室电脑屏幕上的输出并在家看到结果?

我考虑将输出写入文件,但我需要关闭该文件。所以我应该打开文件然后写输出,关闭..再打开?

感谢

我不知道应该使用正确的标签,但该程序是用perl编写的......

3 个答案:

答案 0 :(得分:2)

为什么不直接重定向到日志文件并tail(或在编辑器等中加载)?

$ myprog.pl >/tmp/logfile 2>&1

以上将您的输出重定向到日志文件(/tmp/logfile - 您可能希望选择一个更好的位置,因为/tmp是临时的并且可以在重新启动期间被删除)并将stdout / stderr重定向到一样的地方。请注意,这会捕获程序的输出,您无需修改​​脚本。

另一种方法是在screen

中运行您的程序
  

也许最有用的功能之一是您可以重新连接   注销,移动到另一台计算机或获取后,您的会话   断开连接,并继续工作,好像什么也没发生。你的全部   编辑会话,shell窗口等将在您离开时就在那里   它们。

答案 1 :(得分:2)

你可以tee

your_program.pl | tee logfile.txt

使用

查看家中logfile.txt的最新结果
tail -f logfile.txt

答案 2 :(得分:1)

就个人而言,我使用screen来做这类事情。

  • 连接到服务器
  • 输入命令screen。它显示一条很好的消息,说明screen的版本,并且它在GPL下。
  • 运行实际命令。
  • 您可以随时点击ctrl-ADscreen会话断开连接。您会看到[detached from pid.tty.server]行的消息。正常退出服务器。
  • 再次连接到服务器并输入命令screen -x以重新连接到您的会话。