可以通过 SSH 访问计算机上的开放终端吗?

ck4*_*k4e 6 ssh command-line bash gnome-terminal

我正在寻找从远程计算机访问开放终端,即在我的计算机上本地打开的终端,而不使用tmuxscreen。造成这种情况的原因有几个,其中最简单的一个是我不断遇到这样的情况:我没有提前计划,在工作时在我的电脑上运行一些大型程序,回家后想通过 ssh 检查它。

本质上,我正在寻找一种方法来连接到已在计算机上运行的终端并查看其输出。

现在,我知道有一些线程说你不能这样做(例如this one),而其他线程则只是推荐screentmux(例如this onethis onethis one)。我正在寻找一种直接访问正在运行的终端进程的方法,或者至少查看该终端的缓存输出。我不一定需要能够在该终端中输入命令。

有没有办法做到这一点?否则,有什么可行的黑客想法吗?我在想我可能会找到一种方法来自动将 stdout、stderr 和命令记录到文件中(也许是对记录所有内容的 bash 历史记录进行巧妙的调整?)

Ser*_*nyy 5

仅仅由于终端的构建方式,不可能访问所有内容,即,如果您没有在所述终端内运行可分离的会话(例如或会话),或者如果您尚未通过命令记录来启动该命令。screentmuxscript

可以做的是通过命令部分查看TTY sudo cat /dev/vcs1/dev/vcs[1-6]对应于各自的 TTY 控制台。这受到相应 TTY 的回滚缓冲区大小的限制,这意味着您只能看到内存中保存的内容,最多可达一定数量的行。当然可以调整以增加行数,如muru 的答案所示。或者,你可能应该尝试

setterm -file log.txt -dump [ttynumbers]
Run Code Online (Sandbox Code Playgroud)

在这个 ssh 问题中提到了这一点。

归根结底,bodhi.zazen 在他们的评论中正确指出,您拒绝使用screen或是tmux最大的问题。我完全理解,我经常忘记自己跟踪长时间运行的程序,但是对于一些命令,您应该开始提前思考。