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

公開: 2022-01-29
バックグラウンドでシェルセッションを使用するラップトップ上の定型化されたLinuxターミナル。
fatmawati achmad zaenuri / Shutterstock.com

Linux tmuxコマンドは、 screenのようなターミナルマルチプレクサです。 その支持者は多く、声を上げているので、2つを比較することにしました。 tmuxは本当に優れているのでしょうか、それともあなたが知っていることを好む場合にすぎないのでしょうか?

tmuxとscreen

tmuxscreenコマンドはどちらもターミナルマルチプレクサです。 これらを使用すると、1つのターミナルウィンドウ内に複数のウィンドウを配置したり、それらの間を行ったり来たりすることができます。 ウィンドウはペインに分割でき、各ペインには独立したコマンドラインがあります。

初心者のための10の基本的なLinuxコマンド
初心者向けの関連する10の基本的なLinuxコマンド

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

1台のコンピューターでセッションを切り離し、家に帰って、リモートコンピューターにログインできます。 再接続すると、バックグラウンドセッションを再接続して、インタラクティブに再度使用できます。

画面コマンドとは何ですか?

screenコマンドもターミナルマルチプレクサであり、オプションが満載です。 あなたがそれでできるすべての詳細については、私たちの詳細な記事をチェックしてください。

広告

今回はtmuxに集中します。 進むにつれて、 screenが同じ機能をどのように処理するかについて説明します。

screenについて私たちを悩ませたのは1つだけです。 それに到達したときにそれをカバーし、 tmuxがもっとうまくいくかどうかを確認します。

関連: Linuxの画面コマンドの使用方法

tmuxのインストール

通常、 screenは一般的なLinuxディストリビューションにデフォルトでインストールされますが、 tmuxはインストールされません。 Ubuntuにtmuxをインストールするには、次のように入力します。

 sudo apt-get install tmux 

Manjaroではpacmanを使用できます:

 sudo pacman -Sy tmux 

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

tmuxセッションの開始

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

 tmux 

tmuxセッション中は、ターミナルウィンドウにステータスバーが表示されます。

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

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

screenコマンドは、デフォルトではステータスバーを表示しません。 あなたは盲目的に飛んで、何が起こっているのかを知るためにあなたの知恵に頼らなければなりません、それは少し練習が必要です。 (独自のステータスバーを設定しない限り。)

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

広告

コマンドはキーストロークを使用してtmuxに与えられ、これには2つの部分があります。 まず、Ctrl + Bを押してtmuxの注意を引きます。 次に、次のキーをすばやく押して、コマンドをtmuxに送信します。 コマンドは、文字、数字、句読点、または矢印キーを押すことによって与えられます。

Ctrl + Aを押して注意を引くことを除いて、 screenでも同じです。

ウィンドウを閉じるには、Ctrl + Bを押してから、すばやくXキーを押します。ステータスバーが黄色に変わります。 次に、ウィンドウを強制終了することを確認するように求められます。

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

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

tmuxセッションが閉じられ、 tmuxを起動したコマンドラインに戻ります。 ターミナルウィンドウに「[exited]」と表示されます。

広告

これは明白なことを述べているように見えるかもしれませんが、それはあなたがセッションを閉じて、それを切り離して実行したままにしないことの確認です。 以下で、セッションの切り離しについて説明します。

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

定期的に複数のtmuxセッションを開始する場合は、それぞれに意味のある名前を付ける機能をすぐに理解できます。 screenでセッションに名前を付けることもできますが、セッションウィンドウのどこにも表示されません。

セッション名でtmuxを開始するには、 new (新しいセッション)コマンドと-s (セッション名)オプションを使用します。 私たちのセッションは「geek-1」と呼ばれるので、次のように入力します。

 tmux new -s geek-1 

tmuxセッションが読み込まれると、左端のステータスバーに最初のエントリとして「geek-1」が表示されます。

ステータスバーの左側にある「geek-1」という名前のtmuxセッション。

さらにウィンドウを追加する

現在のセッションで新しいウィンドウを作成するには、Ctrl + B、Cの順に押します。現在のセッションで空白のターミナルウィンドウが表示されます。 したがって、この新しいウィンドウで何かを実行します。- -w (フォロー)オプションを指定してdmesgコマンドを開始しましょう。

 dmesg -w 

これで、セッションに2つのウィンドウがあります。 1つはtopを実行しており、もう1つはdmesgです。 ただし、一度に表示できるのは1つだけです(これについては後で詳しく説明します)。

広告

ステータスバーの左側を見てください。 私たちはまだ「オタク-1」のtmuxセッションにいます。 ウィンドウ0ではtopが実行されており、ウィンドウ1ではdmesgが実行されています。 dmesgの後のアスタリスク(*)は、どのウィンドウが表示されているかを示します。

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

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

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

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

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

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

Ctrl + Bを押してからDを押すと、セッションが切断されます。 バックグラウンドで実行され続けますが、表示したり操作したりすることはできません。

広告

セッションのtopから始めたので、デモンストレーションを行うための実行中のプロセスがあります。 次に、Ctrl + B、Dの順に押します。セッションが消え、バックグラウンドセッションになります。

元のターミナルウィンドウに戻ります。 tmuxから、セッションが切断されたことを通知するメッセージがあります。 また、セッションに付けた名前を思い出させてくれます。 これは、バックグラウンドセッションにアタッチし、インタラクティブセッションに復元するために使用するため便利です。

デタッチされたセッションをアタッチするには、 -t (ターゲットセッション)オプションを指定したわかりやすいattach-sessionコマンドを使用します。 思い出したいセッションの名前も提供します。

次のように入力します。

 tmux attach-session -t geek-1 

私たちのセッションは戻り、再び目に見えるインタラクティブなセッションになります。

セッションをデタッチする前に起動した長時間実行プロセスまたは継続プロセスは、セッションをアタッチしたときにバックグラウンドで実行されたままになります(終了していない場合)。

screenはこれを行うことができますが、直感的ではありません。

複数のセッションの処理

別のターミナルウィンドウを開いて、「geek-2」という新しいtmuxセッションを開始しましょう。

 tmux new -s geek-2 

そのセッションでは、 dmesgを開始します:

 dmesg -w 

広告

これで、元の「geek-1」 tmuxセッションと、「geek-2」という新しいセッションができました。

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

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

ターミナルウィンドウでtmuxセッションオタク2を切り離しました。

「geek-1」のtmuxセッションに戻り、Ctrl + Bを押してから、Sを押してtmuxセッションのリストを表示します。

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

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

広告

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

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

これを行う前に、「geek-2」セッションを切り離しました。 ただし、元のターミナルウィンドウに接続されたままのセッションでこれを行うことができます。 これを行うと、画面の変更が両方のtmuxセッションで同時に表示されます。

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

窓ガラスの操作

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

これは現在のウィンドウにのみ影響します。 セッションの他のメンバーは変更されません。 上部ペインのtmux lsコマンドを使用して、このセッションのウィンドウを一覧表示しました。 2つあり、ステータス行はウィンドウ1にいることを示しています。 Ctrl + Bを押してから0(ゼロ)を押してウィンドウゼロにホップすると、そのままにしていたことがわかります。

広告

これらは2つの独立したコマンドラインであり、1つのウィンドウに2つのビューが表示されるわけではありません。 それらは別個の別個のシェルです。 各ペインで異なるコマンドを実行することで、これを示すことができます。

次のように入力します。

uname -a

ls -hl

あるペインから別のペインに移動するには、Ctrl + Bを押してから、上矢印、下矢印、左矢印、または右矢印のいずれかを押します。

ターミナル未亡人のtmuxセッションの2つのペインにある2つの異なるコマンド。

Ctrl + Bを押してからパーセント記号( %)を押すと、現在のペインが垂直方向に分割されます。

Ctrl + Bを押してからQを押して、 tmuxに各ペインの番号を短時間点滅させます。

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

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

広告

screenコマンドにもペインがありますが、繰り返しになりますが、操作は直感的ではありません。 screenについて私たちを悩ませているのは、ペインを使用してセッションをデタッチすると、そのセッションを再アタッチするとペインが消えることです。 これはすぐに古くなります。

Ctrl + Bチートシート

以下のtmuxで使用できるさまざまなコマンドのチートシートが含まれています。

セッションコマンド

  • S:セッションを一覧表示します。
  • $:現在のセッションの名前を変更します。
  • D:現在のセッションを切り離します。
  • Ctrl + B、次に?: tmuxでヘルプページを表示します。

ウィンドウコマンド

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

ペインコマンド

  • %:水平分割を作成します。
  • 「:垂直分割を作成します。
  • Hまたは左矢印:左側のペインに移動します。
  • Iまたは右矢印:右側のペインに移動します。
  • Jまたは下矢印:下のペインに移動します。
  • Kまたは上矢印:上のペインに移動します。
  • Q :ペイン番号を簡単に表示します。
  • O:ペインを順番に移動します。 すべてをループするまで、押すたびに次のボタンに移動します。
  • }:現在のペインの位置を次のペインと入れ替えます。
  • {:現在のペインの位置を前のペインと入れ替えます。
  • X:現在のペインを閉じます。

それらを比較する方法

機能面では、 screentmuxはどちらも同じように機能し、同じ主な機能を提供します。 著しく異なるのは、これらの機能にアクセスする方法です。 tmuxは、さまざまな機能にアクセスするためのより滑らかで快適な方法を提供します。 ただし、違いはそれだけではありません。

tmuxでセッションとウィンドウの名前を変更する機能は優れており、セッションを再接続したときにペインが保持されるという事実は、ゲームチェンジャーです。

一方、 screenは、セッションをデタッチして再アタッチすると、ペインを完全に失います。 これは、そもそも切り離さないようにするのに十分なほど煩わしいものです。

tmuxには、信じられないほど柔軟なスクリプト機能など、さらに多くの機能があります。 あなたはそれをチェックするのはあなた自身のおかげです。

関連:開発者と愛好家のための最高のLinuxラップトップ