Articles

Linuxでtmuxを使用する方法(およびScreenよりも優れている理由)

  • Dave McKay

    @TheGurkha

  • May14,2020,8:00am EDT
fatmawati achmad zaenuri/

linuxtmuxscreenのような端末マルチプレクサです。 その支持者は多く、ボーカルなので、私たちは2つを比較することにしました。tmuxは本当に優れていますか、それともあなたが知っていることを好むだけのケースですか?

tmux vs. screen

tmuxコマンドとGNUscreenコマンドは両方とも端末マルチプレクサです。 これらは、単一のターミナルウィンドウ内に複数のウィンドウを持ち、それらの間を前後にジャンプすることを可能にします。 ウィンドウはペインに分割することができ、それぞれが独立したコマンドラインを提供します。

セッションをデタッチすることもでき、バックグラウンドで実行されているヘッドレスエンティティになります。 準備ができたら、新しいターミナルウィンドウを開き、まだ実行中のセッションを再接続できます。 SSH接続を介してこれを行うこともできます。

広告

あるコンピュータでセッションを切断し、家に帰ってリモートコンピュータにログインすることができます。 再接続すると、バックグラウンドセッションを再接続して対話的に再度使用できます。

screenコマンドとは何ですか?

screentmuxscreenが同じ機能または機能をどのように処理するかについて説明します。

広告

一つだけがscreentmuxがより良い運賃かどうかを確認します。

関連:Linuxのscreenコマンドを使用する方法

tmuxのインストール

screen は一般的に一般的なLinuxディストリビューションにデフォル:

sudo apt-get install tmux

Manjaroではpacman:

sudo pacman -Sy tmux

Fedora31では、tmuxはすでにインストールされています。

tmuxセッションを開始する

tmuxを開始するには、それを入力してEnterキーを押します。

tmux

tmuxセッションにいるときにターミナルウィンドウにステータスバーが表示されます。

ステータスバーの右側には、ホスト名と時刻と日付が表示されます。 左側には、次のセッション関連情報が表示されます。

  • : これはセッション名です。 デフォルトでは、ゼロから始まる番号が付けられています。 以下では、セッションに意味のある名前を付ける方法について説明します。
  • 0:bash*:0は、これがこのセッションの最初のウィンドウであることを示します。 このセッションで実行されている唯一のプロセスはbashtmuxセッションで新しいウィンドウを作成するたびに、そのウィンドウ番号とその中で実行されているプログラムの名前がステータ

screenコマンドはステータスバーを与えません。 あなたは盲目に飛んで、何が起こっているのかを知るためにあなたの知恵に頼らなければなりません。

広告

プラス側では、ターミナルウィンドウの不動産の行を失うことはありません。 もちろん、通常は端末ウィンドウを展開して、端末マルチプレクサを使用する価値があるようにします。 その場合、ステータスバーの1行が失われることはあまり問題ではありません。 あなたが情報を見ることができるように、私たちは、デフォルトのサイズでここにターミナルウィンドウの画像を残しました。

コマンドは、キーストロークを使用してtmuxに与えられ、これには二つの部分があります。 まず、Ctrl+Bを押してtmuxtmuxscreenでも同じですが、Ctrl+Aを押して注意を喚起することを除いて。

ウィンドウを閉じるには、Ctrl+Bを押してから、すぐにXを押します。 その後、ウィンドウを強制終了するかどうかを確認するように求められます。

広告

Yキーを押してウィンドウを閉じ、気が変わった場合はNキーを押します。 その後Enterキーを押す必要はありません。YまたはNはあなたの選択を登録するのに十分です。

Yを押すと、ウィンドウが閉じます。 これがこのセッションの唯一のウィンドウであるため、セッションは終了します。

tmuxtmuxtmux ターミナルウィンドウに””が表示されます。これは明白なことを述べているように見えるかもしれませんが、それはあなたがセッションを閉じて、それを切り離して実行したままにしていな デタッチセッションについては、以下で説明します。

名前付きtmuxセッションの開始

複数のtmuxscreentmuxnew(new session)コマンドと-s(session name)オプションを使用します。 私たちのセッションは”geek-1″と呼ばれるので、次のように入力します。

tmux new -s geek-1

tmuxセッションがロードされると、”geek-1″がステータスバーの最現在のセッションで新しいウィンドウを作成するには、Ctrl+Bを押してからCを押します。 現在のセッションでは、空白の端末ウィンドウが表示されます。 この新しいウィンドウで何かが実行されているので、dmesg-w(follow)オプションで開始しましょう。

dmesg -w
広告

セッションに二つのウィンドウがあり、一つはtoptoptoptoptopdmesg。 私たちは一度に一つしか見ることができませんが、(一瞬でそれについての詳細)。

ステータスバーの左側を見てみましょう。 私たちはまだ”geek-1″tmuxセッションにいます。 ウィンドウゼロではtopが実行され、ウィンドウ1ではdmesgdmesgの後のアスタリスク(*)は、どのウィンドウが表示されているかを示します。

ウィンドウ間を移動するには、Ctrl+Bを押してから、次のいずれかのキーを押します。

  • N:次のウィンドウを表示します。
  • P:前のウィンドウを表示します。
  • 0から9:0から9の番号のウィンドウを表示します。

リストからウィンドウを選択することもできます。 Ctrl+Bを押してからWを押すと、ウィンドウのリストが表示されます。

広告

アンバーのハイライトバーを移動するには、上下の矢印、ホーム、または終了を押します。 ディスプレイの下部には、強調表示されたウィンドウ内のコンテンツのプレビューが表示されます。

強調表示されたウィンドウに移動するにはEnterキーを押し、切り替えずにウィンドウリストを離れるにはEscキーを押します。

セッションのデタッチとアタッチ

Ctrl+Bを押してからDを押すと、セッションがデタッチされます。 それはバックグラウンドで実行され続けますが、あなたはそれを見たり、対話することはできません。セッションでtopを開始したので、デモするプロセスが実行されています。 次に、Ctrl+Bを押してからDを押します。

広告

元のターミナルウィンドウに戻ります。 セッションが切り離されていることを示すメッセージがtmuxattach-session-t(target session)オプションとともに使用します。 また、リコールしたいセッションの名前も提供します。

次のように入力します。

tmux attach-session -t geek-1

セッションが戻り、再び可視の対話型セッションになります。

セッションをデタッチする前に起動した長時間実行または継続的なプロセスは、セッションをアタッチするときに(終了していない限り)バックグラp>

screentmux“geek-2″というセッションを開始しましょう:

tmux new -s geek-2

そのセッションでは、dmesg

dmesg:dmesgdmesg:dmesgdmesgdmesg

dmesg -w
広告

今、私たちは私たちの元の”geek-1″tmuxセッションと呼ばれる新しいものを持っています”geek-2。”

ステータスバーには、このセッションが”geek-2″と呼ばれ、dmesgを実行しているウィンドウが1つ表示されます。

Ctrl+Bを押してからDを押すと、そのセッションが切断されます。

広告

“geek-1”tmuxセッションで、Ctrl+Bを押してからSを押して、tmuxセッションのリストを表示します。

明確にするために、これはセッションのリストです。 私たちが以前に見た同様の表示は、単一のセッションでのウィンドウのリストでした。

アンバーのハイライトバーを移動するには、上下の矢印、ホーム、および終了を押します。 下のセクションには、強調表示されたセッションのコンテンツのプレビューが表示されます。

右矢印を押すと、強調表示されたセッションのウィンドウが表示されます。

広告

Enterキーを押して、強調表示されたセッションまたはウィンドウに移動するか、Escキーを押してセッションを変更せずにセッショ 新しいセッションを選択すると、現在のセッションが切断され、選択したセッションが接続されます。

私たちはこれを行う前に”geek-2″セッションを切り離しました。 ただし、元の端末ウィンドウにまだ接続されているセッションでこれを行うことができます。 これを行うと、画面の変更は両方のtmuxセッションで同時に表示されます。

screenコマンドは、同様のコマンドセットを介してこれを行うこともできます。

ウィンドウペインの操作

Ctrl+Bを押してから二重引用符(“”)を押すと、ウィンドウを水平に二つのペインに分割します。

Advertisement

これは現在のウィンドウにのみ影響し、セッション内の他のウィンドウは変更されません。 このセッションのウィンドウを一覧表示するには、上部ペインでtmux lsコマンドを使用しました。 二つあり、ステータスラインは我々がウィンドウ一つにいることを示しています。 Ctrl+Bを押してウィンドウゼロに移動し、次に0(ゼロ)を押すと、それがそのまま残っていることがわかります。

これらは二つの独立したコマンドラインであり、一つのウィンドウ内の二つのビューではありません。 これを表示するには、各ペインで別のコマンドを実行します。p>

次のように入力します。

uname -a

ls -hl

あるペインから別のペインに移動するには、Ctrl+Bを押してから、上、下、左、または右矢印を押します。Ctrl+Bを押してからパーセンテージ記号(%)を押すと、現在のペインが垂直に分割されます。

広告

Ctrl+Bを押してからQを押して、tmuxtmuxからのプロンプトやメッセージで使用されます。 Ctrl+Bを押し、次にXを押して現在のペインを閉じます。 ステータスバーが琥珀色に変わり、そのペイン番号を閉じることを確認するように求められます。 Yキーを押してペインを削除するか、Nキーを押してそのままにします。

Yキーを押すと、ペインが削除されます。

screenscreenについて私たちを悩ますことは、ペインでセッションをデタッチすると、そのセッションを再アタッチすると消えます。 これは非常に迅速に古い取得します。

A Ctrl+Bチートシート

以下に、tmuxで使用できるさまざまなコマンドのチートシートを含めました。

セッションコマンド

  • S:セッションを一覧表示します。
  • $:現在のセッションの名前を変更します。
  • : 現在のセッションをデタッチします。
  • Ctrl+Bを押してから?:ヘルプページをtmuxに表示します。

ウィンドウコマンド

  • C:新しいウィンドウを作成します。
  • ,:現在のウィンドウの名前を変更します。
  • W:ウィンドウを一覧表示します。
  • N:次のウィンドウに移動します。
  • P:前のウィンドウに移動します。
  • 0から9:指定されたウィンドウ番号に移動します。

ペインコマンド

  • %:水平分割を作成します。
  • “:垂直分割を作成します。
  • Hまたは左矢印:左側のペインに移動します。
  • Iまたは右矢印: 右側のペインに移動します。
  • Jまたは下矢印:下のペインに移動します。
  • Kまたは上矢印:上のペインに移動します。
  • Q:ペイン番号を簡単に表示します。
  • O:順番にペインを移動します。 あなたがそれらのすべてをループするまで、各プレスは、次のに移動します。
  • }:現在のペインの位置を次のペインと交換します。
  • {:現在のペインの位置を前のペインと交換します。
  • X:現在のペインを閉じます。機能面では、screentmuxtmuxは、さまざまな機能を取得するためのスリッカー、より快適な方法を提供しています。 しかし、それが唯一の違いではありません。
    広告

    tmuxでセッションとウィンドウの名前を変更する機能はきちんとしており、セッションを再接続するときにペインを保持p>

    screen一方、セッションをデタッチして再アタッチすると、ペインが完全に失われます。 これは、あなたが最初の場所でデタッチを避けるために十分にほとんど迷惑です。

    tmuxには、非常に柔軟なスクリプト機能など、はるかに多くのものがあります。 あなたはそれをチェックアウトするために自分自身にそれを借りています。

    Dave McKay
    パンチ紙テープが流行していたときにDave McKayが最初にコンピュータを使用し、それ以来プログラミングを行ってきました。 IT業界で30年以上を過ごした後、彼は現在、フルタイムの技術ジャーナリストです。 彼のキャリアの間に、彼はフリーランスのプログラマー、国際的なソフトウェア開発チームのマネージャー、ITサービスプロジェクトマネージャー、そして最近ではデー DaveはLinuxエバンジェリストであり、オープンソースの提唱者です。完全なバイオを読む”