我有一个 Ubuntu 服务器版本正在运行,我可以通过 SSH 连接它来执行各种任务。我想要的是能够通过 SSH 进入我的服务器启动服务器应用程序,然后切换到另一个“虚拟”会话(在同一个 SSH 实例中)并针对该服务运行客户端调用。当我启动服务时,它是一个阻塞调用,所以如果不启动另一个 SSH 会话,我就无法针对它运行客户端调用。
我希望可能有一种更巧妙的方式,就像 UI 对虚拟桌面所做的那样。
我有一个 Ubuntu 服务器版本正在运行,我可以通过 SSH 连接它来执行各种任务。我想要的是能够通过 SSH 进入我的服务器启动服务器应用程序,然后切换到另一个“虚拟”会话(在同一个 SSH 实例中)并针对该服务运行客户端调用。当我启动服务时,它是一个阻塞调用,所以如果不启动另一个 SSH 会话,我就无法针对它运行客户端调用。
我希望可能有一种更巧妙的方式,就像 UI 对虚拟桌面所做的那样。
您想要使用的是屏幕,甚至更好的是一个用户友好的屏幕包装,称为 byobu。
Screen 允许您在同一个 ssh 会话中运行多个虚拟终端会话。提供教程和帮助页面。
byobu是一个包装器,它允许使用简单的功能键而不是 ctrl-a 的组合键轻松打开新屏幕。它还显示了一个状态行,其中包含所有可以命名的打开的虚拟终端。
另一个不错的功能是,当您的 ssh 连接断开时,您的所有屏幕都可以保持打开状态。您只需通过 ssh 再次连接并调用 byobu,一切都像以前一样。
最后是byobu的一些截图。
GNU Screen是您一直在寻找的答案——但它很像 Vi。您已经学习了很多命令来设置成功的 Screen 环境。这里有一些东西可以帮助您入门。首先,您需要将此
.screenrc
http://paste.ubuntu.com/473764/保存在远程服务器上的用户主文件夹中。下一步在远程机器上安装屏幕 (sudo apt-get install screen
) 接下来您要启动它,这里有一些用于“启动屏幕”的命令:screen
- 这很简单。它开始一个新的屏幕会话screen -ls
- 列出所有活动的屏幕会话。是的,您可以在多个屏幕内拥有多个终端。如此甜蜜。样本
screen -x <pid>
- 这将恢复分离屏幕会话,即 IE:screen -x 16467
进入屏幕后(并且使用了我的示例
.screenrc
文件),您将在底部看到以下内容:(LOAD) 0$* bash
这是服务器负载和所有打开的“终端选项卡”的列表。目前只有一个窗口。键入内容然后按此组合键:
Ctrl + A
松开,然后按c
。Ctrl + A
是转义序列。所有命令都以此组合开始。c
是创建新标签。您会注意到页脚(LOAD) 0-$ bash 1$* bash
显示有另一个选项卡打开,并且活动选项卡的编号为 1。每个屏幕会话最多可以打开 60 个选项卡。如果你想退出屏幕但让它继续运行,
Ctrl + A
那么使用d
它将分离你的会话。最后,您可以使用Ctrl + A
then关闭选项卡,k
这将杀死该选项卡(如果它锁定),但通常您可以exit
像在终端中一样键入,它会关闭该选项卡。最后列出所有打开的窗口,您可以键入
Ctrl + A
then"
。Screen 有很多可用的选项,您应该在 man 文件中找到更多选项。有一些缺点。您不能在 Screen 中使用滚动条,您必须使用缓冲区控件来回滚,但以上内容足以让您开始了解这是否是一个可行的选项。这是一件很棒的事情,也是我作为系统管理员处理过很多事情的事情——网络连接。如果您的网络中断,您的操作不会丢失!由于屏幕正在服务器上运行。您只需通过 SSH 重新登录,然后
screen -ls
重新screen -x
进入您的会话。如果您使用的是 Ubuntu Server Edition
byobu
,绝对是您的最佳选择。Ubuntu 服务器指南有一些有用的文档。screen
它通常比默认安装更容易学习和使用。我使用 Emacs,所以 screen 的默认配置让我的生活变得困难。
逃脱^\
试试看!