大衆へのコンソール。 明るい側に行く。 パート2

tmuxの例



エントリー



かなり長い間、仕事で画面を使用していました。 しかし、時間が経つにつれて、彼は私に合うのをやめました。 私は代替案を探し始めました。 そのような代替手段はtmuxです。 多くのポータルでは、次のように説明されています。「これは同じ画面で、ステロイドのみです。」 最初は、そのような比較がまだ試行されなかった理由を理解できませんでした。 率直に言って、私は初めてそれに切り替えませんでした。 私はそれを3、4回試し、画面に戻りました。 しかし、tmuxはまだ勝ちました。



重要なポイント。 前回の記事では、画面とtmuxの代替案に関する多くのコメントを受け取りました。 ここでは、彼らが言うように、鉛筆の味と色が異なっています。 注目したい2番目のポイントは、読者がグラフィカルシェルにアクセスできないことです。 彼の武器には、ターミナル( CLI )と彼が使用できる一連のコマンドがあります。



設置



それでは、tmuxのインストールに移りましょう。 最初のコマンドを実行してインストールするだけで十分です。 その後、ターミナルでtmux



コマンドを入力して起動できます。



sudo apt-get install tmux
tmux
view raw install tmux hosted with ❤ by GitHub
経験豊富なユーザーの場合は、 リポジトリからtmuxを構築するか、アーカイブをコンピューターにダウンロードできます。 これを行う方法については、 ここで説明します



基本的なキーボードショートカット



ここでは、画面の場合と同様に、 リンクのみを追加します。 次に、それを取得して使用を開始します。 暗記する必要はありません。 唯一の注意点は、キーの組み合わせが異なることですが、これは設定ファイルで簡単に修正できます。



設定



デフォルトでは、tmuxは「すぐに使える」と言われているように、非常に質的に構成されています。 画面のように、タブ付きパネルの位置、強調表示する色、その他の設定を調整する必要はありません。 ただし、構成ファイルが突然必要になった場合は、注意してください.tmux.conf



という.tmux.conf



する必要が.tmux.conf



ます。 ユーザーのホームディレクトリに配置する必要があります。



有用な設定を共有したいのですが、それなしでtmuxセッションを再作成する必要がありました。 詳細に説明します。 Windowsを実行している稼働中のマシンがあります。 Puttyとpagentは、リモートサーバーへの接続(キーの追加)に使用されます。 キーをpagentに追加するとき、パスワードを入力する必要があります(パスフレーズ-sshキーの作成時に指定します)。 パテでは、接続ごとにこのチェックボックスが設定されます:



PuTTY構成ssh Windows + PuTTY + ssh経由のリモート接続のこのような機能。 このチェックボックスは、SSHエージェント転送が機能するために必要です。



それでは、問題に戻りましょう。 ネットワークとの接続が突然失われた場合、またはオフィスの電源が突然オフになった場合、もちろんtmuxはセッションを保存します。 そして、このセッションに再接続するとき、彼はキーのパスワードを入力するよう丁寧に尋ねます。 それは毎回そうなります。 つまり SSHエージェント転送は機能しなくなります。 これは、現在のtmuxセッションを終了してリモートサーバーに再接続することで修正できます。 一方で、これはそれほど重要ではありません。


しかし、時間が経つにつれて、この問題は多くの不便を引き起こし、私はそれを一度だけ解決したいと思います。 この問題を解決するには、ユーザーのホームディレクトリにある.bashrc



設定を追加する必要があります。



# Making SSH_AUTH_SOCK work between detaches in tmux/screen
if [[ ! -z "$SSH_AUTH_SOCK" -a "$SSH_AUTH_SOCK" != "$HOME/agent_sock" ]]
then
unlink "$HOME/agent_sock" 2>/dev/null
ln -s "$SSH_AUTH_SOCK" "$HOME/agent_sock"
export SSH_AUTH_SOCK="$HOME/agent_sock"
fi
view raw SSH_AUTH_SOCK.sh hosted with ❤ by GitHub
SSHエージェント転送を有効にしてリモートサーバーに接続するとどうなるかを説明します。 SSHエージェント転送が有効になっているsshクライアント(この場合はパテ)がサーバーに接続すると、このキーを取得できるソケットが作成されます。 また、このソケットを参照する$SSH_AUTH_SOCK



変数も作成します。 この変数は、現在のセッション内で実行中のシェル(ユーザーコマンドを処理するシェル)によって継承されます。 この変数に加えて、さらにいくつかの変数が作成されます。 $SSH_CLIENT, $SSH_CONNECTION, $SSH_TTY



は、現在のssh接続に関する情報を保存します。 切断が発生すると、ターミナルマネージャ(この場合はtmux)は、これらの変数の古い値でセッションを保存します。 そして、リモートサーバーに再接続すると、新しい値で新しいソケットが作成されます。 しかし、それらは古いターミナルマネージャーセッションに分類されません。 したがって、これらの値を保存し、再接続がある場合は再接続するときに使用することをシェルに対して明確にする必要があります。



ビジネスにおけるtmux



tmuxの動作を確認するときが来ました。 実行方法はすでに知っています。 tmux



と入力するだけです。



tmuxファーストスタートの例



  1. 作業エリア。 パネル(ペイン-tmuxドキュメントから)。
  2. ステータスバー。 タブやその他の要素が配置されます。
  3. デフォルト名のタブ。


tmuxの初期状態を調べました。 前回の記事を読んだ場合、初期状態、実際にはtmuxの外観は画面とあまり変わらないことに気づいたかもしれません。 ステータス行が最初に利用可能であることを除きます。 それでは、もっと複雑な問題の例としてtmuxを見てみましょう。







このために、 リポジトリが必要です 。 コンピューターにクローンを作成していない場合は、次のコマンドを実行します。



 git clone https://github.com/var-bin/terminalForCoder__WSD.git
      
      





次に、tmuxを実行します。 はじめに、タブを操作しましょう。 2〜3個のタブが必要です。 新しいタブを作成するには、次のキーボードショートカットを押します。



 Ctrl + b, c -   
      
      





次のステップは、タブの名前を変更することです。 これを行うには、次を使用します。



 Ctrl + b, , -  
      
      





タブを切り替えるには、次のキーを使用します。



 Ctrl + b, int -     (int -   0 - 9)
      
      





または



 Ctrl + b, w -   
      
      





タブを少し練習します。 次に、現在のパネルを2つの独立したパネルに分割します。 このレイアウトは、他のすべてのタブでは保存されないことに注意してください。 tmuxは、タブごとに独自の独立したレイアウトを作成します。 これは、キーボードショートカットを使用して行います。



 Ctrl + b, % -        
      
      





次に、左側のパネルでユーティリティを実行してみましょう。 たとえば、次のコマンドを使用した深夜司令官 (その他のユーティリティ):



 mc
      
      





パネル間を移動するには、次のキーボードショートカットを使用します。



 Ctrl + b, ← ↑ → ↓ -   
      
      





そして、右側のパネルで、テストアプリケーションを実行します。 これはnode.jssocket.ioで書かれたシンプルなチャットです。 この例は、socket.ioの公式Webサイトから引用したものです。 追加したのは、少しログを記録するだけなので、動作することがわかります。 これを行うには、 %repoName%/tmux/chat-example



ディレクトリに移動します。 そして、コマンドを実行します:



 npm i node index.js
      
      





%repoName%



-リポジトリのクローンが作成されたディレクトリの名前。



すべてが順調であれば、画面に次の行が表示されます。



 listening on localhost:3000
      
      





その後、ブラウザーを起動し、新しいタブでlocalhost:3000



移動します。 入力行にメッセージをEnter



を押します。 ご覧のとおり、すべてが機能し、ターミナルでもこの​​メッセージを読むことができます。 node index.js



コマンドがnode index.js



た領域。



node.js、socket.io、mcを使用したtmuxの例



そして今、前の記事でやったことをする時です。 切断を模倣します。 クロスを介して端末を閉じる必要があります。 ただし、ブラウザを閉じないでください。 そして、さらにいくつかのメッセージを送信してみてください。 すべてが機能し続けます。 これは、ターミナルを閉じたばかりであるという事実にもかかわらずです。



tmuxの例。チャットはまだ機能しています



セッションとtmuxを実行していたすべてのプロセスが保存されました。 前の記事でわかったように、screenはこれを行う方法も知っています。 tmuxセッションに再び接続しましょう。 ターミナルを起動して、コマンドを実行します。



 tmux attach
      
      





tmuxの例。 tmux接続



ご覧のとおり、tmuxは以前に作成したレイアウトを保存しました(垂直パネルの内訳)。 これは、同じ画面に比べて大きなプラスです。



便利なリンク



  1. tmuxの素敵なベビーベッド
  2. tmuxによる優れたチートシート(habrバージョン)
  3. Tmux公式ウェブサイト
  4. man tmux



    =)


画面と tmux



画面とtmuxを比較します。 画面とtmuxの両方を使用した作業(約2.5年)で、画面を使用する価値がある場合は、tmuxを使用できない場合にのみ、という結論に達しました。 つまり tmuxをインストールできないか、ソースからビルドできない場合。 その他の場合はすべて、すぐにtmuxから開始することをお勧めします。

スクリーン tmux
-



各タブのレイアウトの作成方法がわからない

-



接続が失われたり、他に何かがあった場合にレイアウトを保存する方法がわからない

-



バージョン4.1より前では、垂直の内訳ができませんでした

-



新しいリージョンを作成したとき、個別に新しいウィンドウ(Ctrl+a, c)



を作成し、目的のディレクトリなどに移動する必要があります。

-



リージョンを削除するには、 Ctrl+a, :remove



を苦しめる必要もあります: Ctrl+a, :remove





+



「すぐに使える」はかなり高品質に設定されています

+



タブ付きパネルの位置を調整する必要はありません。それらを強調表示する方法

+



パネル上で画面を垂直と水平の両方で共有可能

+



パネルを閉じるには、 exit



と入力しexit





+



リモート接続を維持できる*







*追加の魔法が必要



まとめましょう。 もう1つのターミナルマネージャであるtmuxを調べました。 インストール、設定で練習しました。 いくつかのホットキーを使用しました。 例でtmuxを試しました。 同じ画面と比較して、その利点がわかりました。



screenとtmuxに加えて、さまざまなオペレーティングシステム、個人の好み、希望に合わせて、かなり幅広いターミナルマネージャーが選択できます。



以上です。 ご清聴ありがとうございました。 最後まで読んでくれた人、ありがとう。 次の記事でお会いしましょう。



All Articles