2013-03-14 65 views
0

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

我想看看我家的输出,怎样捕捉办公室电脑屏幕上的输出,看看结果如何家?

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

感谢

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

回答

2

可以tee

your_program.pl | tee logfile.txt 

,看到了最新的结果logfile.txt在家

tail -f logfile.txt 
+0

请注意,您应该捕获stderr以及stdout – 2013-03-14 10:39:23

+0

准确无误。这可以通过'your_program.pl |&tee logfile.txt'完成。 – Alec 2013-03-14 14:56:10

2

为什么不直接重定向到一个日志文件,并tail它(或负载它在编辑器等)?

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

以上的重定向输出到一个日志文件(/tmp/logfile - 你不妨选择一个更好的位置,因为/tmp是暂时的,可重新启动过程中丢弃)和重定向标准输出/标准错误输出到同一个地方。请注意,这会捕获程序的输出,并且不需要修改脚本。

另一种方法是内screen

也许,最有用的功能之一运行您的程序,你可以重新连接到 您的会话登录后出来,转移到另一台计算机,或得到 断开连接,并继续工作,好像什么也没有发生。你所有的 编辑会话,shell窗口等将在那里,就像你离开 他们一样。

1

就个人而言,我用screen对于这样的事情。

  • 连接到服务器
  • 输入命令screen。它显示一个很好的信息,说明screen的版本,并且它在GPL下。
  • 运行实际的命令。
  • 在任何时候,点击ctrl-ADscreen会话断开连接。您将会看到一条沿着[detached from pid.tty.server]的消息。通常从服务器注销。
  • 再次连接到服务器并输入命令screen -x重新连接到您的会话。