我确信这是一个非常基本的问题。我认为tmux
可以促进这一点,但我不确定确切的步骤。
我的用例是:
我坐在桌面上,通过 ssh 连接到服务器。我开始一个长期运行的过程。当我做其他事情时,该进程继续在服务器上运行(但此时我不一定与服务器分离)。
现在我在我的笔记本电脑上。 (假设我去吃午饭了。)我需要 ssh 进入同一台服务器,查看我在桌面上看到的相同控制台输出(如果我在那里),并将一些击键发送到同一仍在运行的应用程序。我需要与它进行交互,就像我仍在桌面 ssh 会话中一样。完成后,我将脱离此会话并允许应用程序继续在服务器上运行。
稍后,我会在工作时从我的桌面上查看它。一天工作结束时,我会脱离它并回家。 (现在没有会话附加到服务器上的进程。)在家里,我将连接到服务器并附加到同一个仍在运行的应用程序,查看屏幕上的内容,并可能向其发送一些命令。
tmux
似乎非常关注终端多路复用,以至于我迄今为止找到的答案或教程中没有解释我的用例。我的用例似乎几乎相反。我不需要坐在一个屏幕前连接到多个服务器。我将在一台服务器上工作,但从多台不同的计算机连接到它,有时同时打开多个连接,有时根本没有连接,我的重点是与服务器上一个长期运行的应用程序进行交互。
连接到服务器并启动控制台应用程序,然后连接到同一应用程序并查看来自多台其他计算机的相同控制台输出的步骤是什么?
另外,tmux
客户端和服务器端都需要安装吗?
答案1
我决定使用tmux
.我不相信nohup long-running-process &
满足我的要求。我tmux
尝试了一下,它确实按预期工作。看来在我的用例中tmux
只需要安装在服务器上。
我坐在办公桌前工作:
$ ssh my_server
$ tmux new-session -s my_session_name
$ application_name #启动长时间运行的应用程序并在控制台上查看其输出现在我在我的笔记本电脑上。 (假设我去吃午饭了。):
$ ssh my_server
$ tmux Attach-session my_session_name
查看相同 application_name 的控制台
输出 根据需要发出击键
ctrl-b d # 分离 tmux 会话
$ exit # 断开 ssh 会话一天工作结束时,我会脱离它并回家:
ctrl-b d
$ 退出在家里我将连接到服务器:
$ ssh my_server
$ tmux Attach-session my_session_name
查看 application_name 的控制台输出
根据需要发出击键
ctrl-b d
$ exit
第二天早上上班时,以同样的方式重新连接。