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

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

重要なポイント

Linux ディストリビューションのリポジトリから tmux をインストールし、Linux ターミナルで「tmux」を実行します。各 tmux セッションに一意の名前を付け、各セッション内にウィンドウを作成し、それらのウィンドウをペインに配置できます。

Linux の tmux コマンドは、 screen のような ターミナル マルチプレクサです。その支持者は多く、声高に主張しているため、この 2 つを比較することにしました。 tmux 本当に優れているのでしょうか、それとも単に自分が知っているものを優先しているだけなのでしょうか?

tmux と screen

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

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

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

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

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

screen コマンドは端末マルチプレクサでもあり、オプションが満載です。これを使用してできるすべての詳細については、 詳細な記事をご覧ください

今回は tmux に焦点を当て ます。読み進めるにつれて、 screen 同じ機能をどのように処理するかについても説明します。

screen に関して気になる点が 1 つだけあります。これについては、到達したら説明し、 tmux が優れているかどうかを確認します。

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

tmux のインストール

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

 sudo apt-get インストール tmux

Manjaro では pacman 使用できます。

 sudo pacman -Sy tmux

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

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

tmux セッションの開始

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

 tmux

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

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

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

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

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

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

screen でも同じですが、Ctrl+A を押して注意を引く点が異なります。

ウィンドウを閉じるには、Ctrl+B を押してすぐに X を押します。ステータス バーがオレンジ色に変わります。次に、ウィンドウを強制終了するかどうかを確認するメッセージが表示されます。

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

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

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

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

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

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

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

セッション名を使用して tmux を起動するには、 new (新しいセッション) コマンドと -s (セッション名) オプションを使用します。セッションの名前は「geek-1」にするので、次のように入力します。

 tmux new -s geek-1

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

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

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

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

 dmesg -w

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

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

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

  • N : 次のウィンドウを表示します。
  • P: 前のウィンドウを表示します。
  • 0 ~ 9: 0 ~ 9 の番号が付いたウィンドウを表示します。

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

黄色のハイライト バーを移動するには、上矢印または下矢印、Home、または End を押します。ディスプレイの下部セクションには、強調表示されたウィンドウのコンテンツのプレビューが表示されます。

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

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

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

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 を押すと、そのセッションが切断されます。

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

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

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

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

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

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

screen コマンドでも、同様の一連のコマンドを使用してこれを行うことができます。

ウィンドウペインの操作

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

これは現在のウィンドウにのみ影響します。セッション内の他の部分は変更されません。上部ペインで tmux ls コマンドを使用して、このセッションのウィンドウを一覧表示しました。ウィンドウは 2 つあり、ステータス行はウィンドウ 1 にいることを示します。 Ctrl+B を押してウィンドウ 0 に移動し、次に 0 (ゼロ) を押すと、ウィンドウを終了したときと同じ状態が表示されます。

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

次のように入力します。

uname -a ls -hl あるペインから別のペインに移動するには、Ctrl+B を押してから、上、下、左、または右矢印を押します。

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: 現在のペインを閉じます。

比較方法

機能の点では、 screen tmux どちらも同様に実行され、同じ主な機能を提供します。大きく異なるのは、これらの機能にアクセスする方法です。 tmux 、さまざまな機能にアクセスするためのよりスムーズで快適な方法を提供します。ただし、違いはそれだけではありません。

tmux でセッションとウィンドウの名前を変更できる機能は優れており、セッションを再接続してもペインが保持されるという事実は、状況を大きく変えるものです。

一方、 screen では、セッションをデタッチして再アタッチすると、ペインが完全に失われます。これはほとんど面倒なので、最初から切り離すことを避けなければなりません。

tmux には、信じられないほど柔軟なスクリプト機能など、さらに多くの機能があります。あなたにはそれを確認する義務があります。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワッド · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 Linux で tmux を使用する方法 (および Screen よりも tmux が優れている理由)」に関するベスト動画選定!

【初心者向け】Core2Duoが蘇る MX Linux 23.2 Libretto 古いPCにLinuxをインストールしよう #46
linux小ネタ ターミナルの分割などにはbyobuが便利