如何通过一个SSH连接进行多个终端会话?


21

我有一个正在运行的Ubuntu服务器版本,可以通过SSH来执行各种任务。我想通过SSH进入服务器的功能启动服务器应用程序,然后切换到另一个“虚拟”会话(在同一SSH实例中)并针对该服务运行客户端调用。当我启动该服务时,它是一个阻塞调用,因此如果不启动另一个SSH会话,就无法对其进行客户端调用。

我希望可能会有一种轻松的方式,就像UI在虚拟桌面上一样。

Answers:


24

您要使用的屏幕是屏幕,或者甚至更好的是称为byobu的屏幕周围的用户友好包装。

屏幕允许您在同一ssh会话中运行多个虚拟终端会话。提供了教程帮助页面

byobu是一种包装器,可使用简单的功能键(而不是ctrl-a的组合键)轻松打开新屏幕。它还显示一个状态行,其中包含所有可以打开的虚拟终端。

另一个不错的功能是,当ssh连接断开时,您的所有屏幕都可以停滞不动。您只需通过ssh再次连接并致电byobu,一切便像以前一样。

最后是byobu的一些屏幕截图


5

GNU Screen是您一直在寻找的答案-但是它很像Vi。您需要学习很多有关设置成功的Screen环境的命令的知识。这里有一些东西可以帮助您入门。首先,您需要将此.screenrc http://paste.ubuntu.com/473764/保存到用户主文件夹中的远程服务器上。远程计算机上的下一个安装屏幕(sudo apt-get install screen)接下来,您将需要启动它,这里有一些“启动屏幕”命令:

screen-这很简单。它开始一个新的屏幕会话 screen -ls-列出所有活动的屏幕会话。是的,您可以在多个屏幕中拥有多个终端。如此甜蜜。

样品

screen -ls
There is a screen on:
    16467.pts-0.ubuntu  (08/05/2010 07:47:53 PM)    (Detached)
1 Socket in /var/run/screen/S-marco.

screen -x <pid> -这将恢复独立屏幕会话,即IE: screen -x 16467

一旦进入屏幕(并使用了示例.screenrc文件),您将在底部看到以下内容:

(LOAD) 0$* bash

这是服务器负载以及所有打开的“终端选项卡”的列表。目前只有一个窗口。键入一些内容,然后按此键组合:Ctrl + A释放,然后按cCtrl + A是转义序列。所有命令都以此组合开始。c是创建新标签。您会注意到页脚的(LOAD) 0-$ bash 1$* bash显示了另一个选项卡,活动选项卡是数字1。每个屏幕会话最多可以打开60个选项卡。

如果您想退出屏幕但保持其运行状态,Ctrl + A那么d它将断开您的会话。最后,您可以使用来关闭选项卡,Ctrl + A然后使用then k将杀死该选项卡(如果它锁定了),但是通常您可以exit像在终端机一样键入内容,它将关闭该选项卡。

最后列出所有打开的窗口,Ctrl + A然后可以键入"

Screen提供了许多选项,您应该将它倒在man文件中,以获取更多信息。有一些缺点。您不能在“屏幕”中使用滚动条,而必须使用缓冲控件来回滚,但是以上内容足以使您开始了解这是否是可行的选择。这是一件很棒的事情,而作为系统管理员,我已经做了很多事情-网络连接。如果您的网络中断,您的操作将不会丢失!由于屏幕正在服务器上运行。您只需通过SSH重新登录,然后screen -lsscreen -x回您的会话。


看起来txwikinger通过一些有用的链接击败了我!
Marco

键入Ctrl + A然后?转到帮助页面。此处列出了所有命令和快捷方式。键入Ctrl + A然后:按名称使用任何命令,如果记住名称但忘记了热键。

1

如果您使用的是Ubuntu Server Edition,byobu则绝对是最佳选择。《 Ubuntu Server指南》提供了一些有用的文档

通常screen,它比默认安装更容易学习和使用。


0

我使用Emacs,因此屏幕的默认配置使我的生活变得困难。

$ cat /home/cjac/.screenrc 

逃脱^ \

试试看!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.