Linuxでtmuxを使用する方法(そしてなぜそれがScreenよりも優れているのか)

  • デイブ-マッケイ

    @TheGurkha

  • 2020年5月14日、8:00AM EDT
ファトマワティ・アクマド・ザエヌリ/

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

tmuxとscreen

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

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

広告

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

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

screenコマンドは端末マルチプレクサでもあり、オプションが満載です。 あなたはそれで行うことができますすべてのローダウンのために、私たちの詳細な記事をチェックしてくださ

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

screen 我々はそれに到達したときにそれをカバーし、tmuxがより良い運賃かどうかを確認します。

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

tmuxのインストール

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

sudo apt-get install tmux

Manjaroでは、次のものを使用できますpacman:

sudo pacman -Sy tmux

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

tmuxセッションを開始する

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

tmux

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

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

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

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

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

コマンドはキーストロークを使ってtmuxに与えられ、これには二つの部分があります。 まず、Ctrl+Bを押してtmuxの注意を喚起します。 その後すぐにnextキーを押してtmuxにコマンドを送信します。 コマンドは、文字、数字、句読点、または矢印キーを押すことによって与えられます。

これはscreenでも同じですが、Ctrl+Aを押して注意を喚起することを除いて。

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

広告

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

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

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

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

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

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

広告

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

tmux new -s geek-1

tmuxセッションがロードされると、ステータスバーの一番左の最初のエントリとして”geek-1″が表示されます。

ウィンドウの追加

現在のセッションで新しいウィンドウを作成するには、Ctrl+Bを押し、次にCを押します。 この新しいウィンドウで何かが実行されているので、dmesgコマンドを-w(follow)オプションで開始しましょう:

dmesg -w
広告

これで、セッション内に2つのウィンドウがあり、1つはtopを実行しており、もう1つはdmesgを実行しています。 私たちは一度に一つしか見ることができませんが、(一瞬でそれについての詳細)。

ステータスバーの左側を見てみましょう。 私たちはまだ”geek-1″tmuxセッションにいます。 ウィンドウゼロでは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から、セッションが切断されたことを伝えるメッセージがあります。 それはまた私達が会議に与えた名前を私達に思い出させる。 これは、バックグラウンドセッションにアタッチし、対話型セッションに復元するために使用するものなので便利です。

デタッチされたセッションをアタッチするには、自明のattach-sessionコマンドを-t(target session)オプションとともに使用します。 また、リコールしたいセッションの名前も提供します。

次のように入力します:

tmux attach-session -t geek-1

私たちのセッションが戻って、再び目に見える、対話型のセッションになります。

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

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

複数のセッションの処理

別のターミナルウィンドウを開き、”geek”という新しいtmuxセッションを開始しましょう-2″:

tmux new -s geek-2

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

dmesg -w
広告

さて、オリジナルの”geek-1″セッションと新しい”geek-2″セッションを手に入れました。”

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

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

広告

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

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

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

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

広告

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

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

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

ウィンドウペインの操作

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

広告

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

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

次のように入力します:

uname -a

ls -hl

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

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

広告

Ctrl+Bを押し、Qを押してtmuxを各ペインの番号を簡単に点滅させます。

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

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

screenコマンドにもペインがありますが、やはり直感的ではありません。 screenについて私たちを悩ませることは、ペインでセッションをデタッチすると、そのセッションを再アタッチすると消えます。 これは非常に迅速に古い取得します。

A Ctrl+Bチートシート

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

セッションコマンド

  • S:セッションを一覧表示します。
  • $:現在のセッションの名前を変更します。
  • D:現在のセッションを切断します。
  • :tmuxにヘルプページを表示します。

ウィンドウコマンド

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

  • %: 水平分割を作成します。
  • “:垂直分割を作成します。
  • Hまたは左矢印:左側のペインに移動します。
  • Iまたは右矢印:右側のペインに移動します。
  • Jまたは下矢印:下のペインに移動します。
  • Kまたは上矢印:上のペインに移動します。
  • Q:ペイン番号を簡単に表示します。
  • O:順番にペインを移動します。 あなたがそれらのすべてをループするまで、各プレスは、次のに移動します。
  • }:現在のペインの位置を次のペインと交換します。
  • {:現在のペインの位置を前のペインと交換します。
  • X:現在のペインを閉じます。

機能面で

をどのように比較するか、screentmuxはどちらも同様に機能し、同じ主な機能を提供します。 それはあなたが著しく異なっているそれらの機能にアクセスする方法です。 tmuxは、様々な機能に到達するためのスリッカー、より快適な方法を提供しています。 しかし、それが唯一の違いではありません。

広告

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

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

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

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