web-dev-qa-db-ja.com

単一のSSH接続を介して複数のターミナルセッションを使用するにはどうすればよいですか?

Ubuntuサーバーエディションを実行しており、SSHでさまざまなタスクを実行できます。私が望むのは、サーバーにSSHで接続してサーバーアプリケーションを開始し、(同じSSHインスタンス内で)別の「仮想」セッションに切り替えて、サービスに対してクライアントコールを実行する機能です。サービスをブロックする呼び出しを開始すると、別のSSHセッションを起動せずにクライアント呼び出しを実行できません。

UIが仮想デスクトップで行うような、より洗練された方法があるかもしれないと思っていました。

21

使用したいのは、screenまたはさらに良いのは、byobuと呼ばれる画面のユーザーフレンドリーなラッパーです。

画面を使用すると、同じsshセッションで複数の仮想端末セッションを実行できます。 チュートリアル および ヘルプページ が利用可能です。

byob は、ctrl-aのキーの組み合わせではなく、シンプルなファンクションキーを使用して新しい画面を簡単に開くことができるラッパーです。また、名前を付けることができるすべての開いている仮想端末を含むステータス行も表示します。

もう1つの優れた機能は、ssh接続が切断されている間、すべての画面を表示できるという事実です。 sshを介して再度接続し、byobuを呼び出すだけで、すべてが以前のようになります。

最後に、by風のいくつかの スクリーンショット

24
txwikinger

GNU Screen はあなたが探していた答えです-しかしそれはViによく似ています。成功したScreen環境をセットアップするためのコマンドについて多くのことを学びました。ここから始めましょう。まず、この.screenrchttp://paste.ubuntu.com/473764/ をリモートサーバーのユーザーのホームフォルダーに保存します。リモートマシンの次のインストール画面(Sudo apt-get install screen)次に、「画面を起動する」ためのコマンドをいくつか表示します。

screen-これは非常に簡単です。新しいスクリーンセッションを開始しますscreen -ls-すべてのアクティブなスクリーンセッションを一覧表示します。はい、複数の画面内に複数の端末を配置できます。 SO SWEET。

サンプル

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

サーバーの負荷と、開いているすべての「ターミナルタブ」のリストです。現在、1つのウィンドウのみ。何かを入力し、次のキーの組み合わせを押します:Ctrl + A release、次にcを押します。 Ctrl + Aはエスケープシーケンスです。すべてのコマンドはこの組み合わせで開始されます。 cは新しいタブを作成します。フッターには(LOAD) 0-$ bash 1$* bashがあり、別のタブが開いており、アクティブなタブが1番であることを示しています。画面セッションごとに最大60個のタブを開くことができます。

画面を終了して実行したい場合は、Ctrl + Aを使用してから、dを使用してセッションを切断します。最後に、Ctrl + Aを使用してタブを閉じることができます。その後、kを使用すると、そのタブが(ロックされている場合)強制終了しますが、通常は端末にいるかのようにexitと入力するだけで、そのタブを閉じます。

最後に、開いているすべてのウィンドウをリストするには、Ctrl + Aを入力してから"を入力します。

Screenには多くのオプションが用意されており、詳細についてはmanファイルに注ぐ必要があります。いくつかの欠点があります。スクロールコントロールを使用してロールバックする必要がある画面でスクロールバーを使用することはできませんが、これで実行可能なオプションであるかどうかを確認するには、上記で十分です。これに関する素晴らしいことと、システム管理者として多くのことを扱ってきたもの-ネットワーク接続。ネットワークがドロップアウトしても、操作は失われません!画面はサーバー上で実行されているため。 SSH経由で再度ログインし、screen -lsscreen -xをセッションに戻すだけです。

5
Marco Ceppi

Ubuntu Server Editionを使用している場合、byobuは間違いなく最良のオプションです。 Ubuntu Server Guideには いくつかの有用なドキュメント があります。

通常、screenよりも学習と使用が簡単で、デフォルトでインストールされます。

1
jbowtie

私はEmacsを使用しているため、screenのデフォルト構成は私の人生を難しくしています。

$ cat /home/cjac/.screenrc 

エスケープ^ \

やってみて!

0
cjac