Linux:通过 ssh 使用 tee 命令

标签 linux ssh tee

我编写了一个 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 新手。对于任何想法或解决方法,我将不胜感激!

最佳答案

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

关于Linux:通过 ssh 使用 tee 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12041072/

相关文章:

linux - 如何撤消 rm -rf?

c - 检测 Control 键何时被释放

jenkins - 通过 socks 代理连接到Jenkins Node

java - JSch.addIdentity 的 pubkey 参数的用途

linux - 将长标准输出管道传输到 tee 命令有时会导致截断

mysql - 错误 2002 (HY000) : Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) help me

linux - 如何在 SUSE 中列出包存储库 URL?

bash && operator 防止后台通过 ssh

linux - 记录文件名 tee 写入

python - “tee”不被识别为内部或外部命令、可操作程序或批处理文件