1

我已经编写了一个 Fortran 程序(我们称之为 program.exe),并为我做了一些模拟。通过 ssh,我登录了一些遥远的计算机以开始在那里运行,几天后我收集了这些计算机的结果。为了了解程序如何进行的最新情况,我还想将 shell 输出写入文本文件 output.txt (因为我不能一直登录到远处的计算机)。该命令应该类似于

nohup program.exe | tee output.txt > /dev/null &

这使我能够查看 output.txt 以查看当前状态,即使程序尚未结束运行。上面的命令在我的本地机器上运行良好。我首先尝试使用命令'>',但这里的问题是在整个程序完成之前没有任何内容写入文本文件(可能与管道缓冲区有关?)。所以我使用了'tee'的解决方法。

现在的问题是,当我通过 ssh (ssh -X user@machine) 登录计算机时,执行上述命令并使用 VI 编辑器查看 output.txt,直到程序完成后才会出现任何内容。如果我省略 'nohup' 和 '&' 我什至不会得到任何 shell 输出,直到它完成。我的想法是它可能必须对 ssh 缓冲的数据做一些事情,但我是一个 Linux 新手。对于任何想法或解决方法,我将不胜感激!

4

1 回答 1

1

我会使用screen实用程序http://www.oreillynet.com/linux/cmd/cmd.csp?path=s/screen而不是nohup. 因此,我可以将我的程序设置为分离状态 (^A^D) 重新连接到主机,检索我的屏幕会话 (screen -r) 并监控我的输出,就好像我从未注销一样。

于 2012-08-20T16:07:26.180 回答