重要なポイント
Linux ディストリビューションのリポジトリから tmux をインストールし、Linux ターミナルで「tmux」を実行します。各 tmux セッションに一意の名前を付け、各セッション内にウィンドウを作成し、それらのウィンドウをペインに配置できます。
Linux の
tmux
コマンドは、
screen
のような
ターミナル マルチプレクサです。その支持者は多く、声高に主張しているため、この 2 つを比較することにしました。
tmux
本当に優れているのでしょうか、それとも単に自分が知っているものを優先しているだけなのでしょうか?
tmux と screen
tmux
と GNU
screen
コマンドはどちらも
ターミナル マルチプレクサです
。これらを使用すると、1 つのターミナル ウィンドウ内に複数のウィンドウを配置し、それらの間を行き来することができます。ウィンドウは複数のペインに分割でき、各ペインには独立したコマンド ラインが表示されます。
セッションを切り離すこともでき、セッションはバックグラウンドで実行されるヘッドレス エンティティになります。セッションを起動したターミナル ウィンドウを閉じることもできます。準備ができたら、新しいターミナル ウィンドウを開いて、まだ実行中のセッションを再接続できます。これは SSH 接続 経由で実行することもできます。
1 台のコンピュータでセッションを切断し、家に帰ってリモート コンピュータにログインできます。再接続すると、バックグラウンド セッションを再接続して、再度対話的に使用できます。
画面コマンドとは何ですか?
screen
コマンドは端末マルチプレクサでもあり、オプションが満載です。これを使用してできるすべての詳細については、
詳細な記事をご覧ください
。
今回は
tmux
に焦点を当て
ます。読み進めるにつれて、
screen
同じ機能をどのように処理するかについても説明します。
screen
に関して気になる点が 1 つだけあります。これについては、到達したら説明し、
tmux
が優れているかどうかを確認します。
tmux のインストール
一般に、一般的な Linux ディストリビューションでは screen がデフォルトでインストールされますが、tmux はインストールされません。 Ubuntu に
tmux
をインストールするには、次のように入力します。
sudo apt-get インストール tmux
Manjaro では
pacman
使用できます。
sudo pacman -Sy tmux
Fedora 31 では、
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]」と表示されます。
これは明白なことを述べているように思えるかもしれませんが、セッションを切断して実行したままではなく、セッションを閉じたという確認です。セッションの切り離しについては以下で説明します。
名前付き tmux セッションの開始
複数の
tmux
セッションを定期的に開始する場合は、それぞれに意味のある名前を付ける機能がすぐにわかるでしょう。
screen
でセッションに名前を付けることもできますが、それらはセッション ウィンドウのどこにも表示されません。
セッション名を使用して
tmux
を起動するには、
new
(新しいセッション) コマンドと
-s
(セッション名) オプションを使用します。セッションの名前は「geek-1」にするので、次のように入力します。
tmux new -s geek-1
tmux
セッションがロードされると、ステータス バーの左端の最初のエントリとして「geek-1」が表示されます。
ウィンドウをさらに追加する
現在のセッションで新しいウィンドウを作成するには、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 キーを押して切り替えずにウィンドウ リストを終了します。
セッションのデタッチとアタッチ
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
には、信じられないほど柔軟なスクリプト機能など、さらに多くの機能があります。あなたにはそれを確認する義務があります。





