\r\n\r\n

linuxでのtmuxの使い方(そしてscreenより優れている理由)

linuxtmuxコマンドはscreenに似たターミナルマルチプレクサです。その支持者は多く、声も大きいので、この2つを比較することにしました。tmuxが本当に良いのか、それとも自分の知っているものが好きなのか...。

linuxtmuxコマンドはscreenに似たターミナルマルチプレクサです。その支持者は多く、声も大きいので、この2つを比較することにしました。tmuxは本当に優れているのか、それとも自分の知っているものが好きなだけなのか?

スクリーン付きTMUX

tmuxとGNU screenコマンドはどちらも端末のマルチプレクサです。これらは、1つのターミナルウィンドウの中に複数のウィンドウを持ち、それらの間をジャンプして行き来することを可能にします。ウィンドウは複数のペインに分けることができ、それぞれのペインで独立したコマンドラインを提供します。

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

あるコンピューターでセッションをデタッチして帰宅し、その後リモートコンピューターにログオンすることができます。再接続後、バックグラウンドセッションに再接続して、再びインタラクティブに使用することができます。

スクリーンコマンドとは何ですか?

screenコマンドは端末のマルチプレクサでもあり、多くのオプションが用意されています。その真実は、詳細な記事をご覧ください。

今回はtmuxを取り上げますが、次にscreenが同じ機能をどのように扱っているかを説明します。

画面については、1つだけ気になる点があります。後日、到着してからtmuxの方が良いのかどうか、話し合ってみます。

関連:Linuxのscreenコマンドの使い方

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から番号が振られています。以下のセッションに意味のある名前を付ける方法を説明します。
  • 0:bash*: 0は、このセッションの最初のウィンドウであることを意味します。このセッションで動いているプロセスはbashだけです。プログラムを実行すると、その名前がここに表示されます。アスタリスク(*)は、現在表示されているウィンドウであることを示します。tmuxセッションで新しいウィンドウが作成されるたびに、そのウィンドウ番号と、そのウィンドウで実行されているプログラムの名前がステータスバーに追加されます。

スクリーンコマンドではステータスバーが表示されないので、何が起こっているのかを知るためには、ブラインドで自分の知恵を頼りに飛行しなければならず、少し練習が必要です。

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

コマンドはキーストロークによってtmuxに提供され、そのキーストロークは2つの部分から構成されています。まず、Ctrl+Bを押して、tmuxの注意を引きます。そして、次のキーをすばやく押すと、コマンドがtmuxに送られます。コマンドは、文字、数字、句読点、矢印キーを押すことで送信されます。

Ctrl+Aを押して注意を引く以外は、画面上と同じです。

ウィンドウを閉じるには、Ctrl+Bキーを押した後、素早くXキーを押します。ステータスバーが琥珀色に変わり、ウィンドウを閉じるかどうかの確認画面が表示されます。

Yを押すとウィンドウが閉じ、気が変わったらNを押します。その後、Enterキーを押す必要はなく、YまたはNで選択内容を登録できます。

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

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

これは、当たり前のことを言うようですが、セッションを終了したことを確認するもので、切り離したまま実行しているわけではありません。デタッチャブルセッションについては後述します。

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

複数のtmuxセッションを定期的に起動する場合、各セッションに意味のある名前を付ける機能はすぐに理解できると思います。また、画面上でセッションに名前を付けることもできますが、セッションウィンドウのどこにも表示されません。

セッション名を指定して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の番号のウィンドウを表示します。

Windowsは一覧から選択することもできます。Ctrl+Bを押してからWを押すと、Windowsの一覧が表示されます。

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

Enterキーを押すとハイライトされたウィンドウに移動し、Escキーを押すと切り替えずにウィンドウの一覧から離れます。

セパレート・追加セッション

Ctrl+Bを押した後にDを押すと、セッションが分離されます。セッションはバックグラウンドで実行され続けますが、あなたはそれを見ることも操作することもできません。

すでにセッションで開始しているので、実行中のプロセスをデモしています。その後、Ctrl+Bを押しながらDを押すと、セッションが消え、バックグラウンドセッションになります。

元のターミナルウィンドウに戻ります。tmuxからのメッセージは、セッションが分離されたことを伝えている。これは、セッションにつけた名前も思い起こさせます。これは、バックグラウンドセッションにアタッチして、インタラクティブセッションに戻すときに使う方法なので、便利です。

切り離されたセッションをアタッチするには、自明なattach sessionコマンドに-t(ターゲット・セッション)オプションを付けて使用することにします。また、呼び出したいセッションの名称を記入します。

以下のように入力します。

tmux attach-session -t geek-1

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

セッションをアタッチする際、分割セッションの前に開始された長時間稼働プロセスや連続プロセスは、(それらが完了しない限り)バックグラウンドで実行されたままとなります。

画面ではできるのですが、直感的にわからないのです。

複数セッションの取り扱い

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

tmux new -s geek-2

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

dmesg -w

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

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

Ctrl+Bを押した後にDを押すと、セッションを切り離すことができます。

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

はっきり言って、これはセッションのリストです。先ほど見た同様の表示は、1つのセッションのウィンドウのリストでした。

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

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

Enterキーを押すとハイライトされたセッションまたはウィンドウに移動し、Escキーを押すとセッションを変更せずにセッションリストを終了します。新しいセッションを選択すると、現在のセッションが切り離され、選択したセッションが装着されます。

前回は、「Geek 2」のセッションを分離しました。しかし、元のターミナルウィンドウに接続されたままのセッションを使用して、これを行うことができます。このとき、画面の変更は両方のtmuxセッションに同時に表示されます。

screenコマンドも同様のコマンド群で行えます。

ペインを使用する

Ctrl+Bを押した後にダブルクォート("")を押すと、ウィンドウが水平に分割され、2つのペインになります。

これは、現在のウィンドウにのみ影響し、セッション内の他のウィンドウは変更されません。トップペインにあるtmuxlsコマンドを使って、このセッションのウィンドウを一覧表示しています。2つあり、ステータスラインは1つ目のウィンドウにいることを示しています。Ctrl+Bでウィンドウ0にジャンプして、0(ゼロ)を押せば、出たときと同じように表示されます。

これらは2つの別々のコマンドラインであり、1つのウィンドウに2つのビューがあるのではなく、別々のシェルです。

以下のように入力します。

対応するカーネルバージョンの検索

タイプ ls-hl

あるペインから別のペインに移動するには、Ctrl+Bキーを押しながら、上下左右の矢印を押してください。

Ctrl+Bを押した後、パーセント記号(%)を押すと、現在のペインが縦に分割されます。

Ctrl+B、Qの順で押すと、tmuxが各ペインの番号を短く点滅させます。

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

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

screenコマンドにもペインがありますが、直感的に使いこなせません。ペインでセッションを区切ると、そのセッションに再接続したときにペインが消えてしまうので困ります。これはすぐに飽きる。

a ctrl+b メモシート

以下のtmuxに各コマンドのメモ一覧を掲載しました。

セッションコマンド

  • S:セッションをリストアップします。
  • $: 現在のセッションの名前を変更します。
  • D:現在のセッションを切り離す。
  • Ctrl+B, then what?: tmuxのヘルプページを表示します。

ウィンドウズ・コマンド

  • 新しいウィンドウを作成します。
  • ,: 現在のウィンドウの名前を変更します。
  • W:窓をリストアップしてください。
  • 看護師:次のウィンドウに移動します。
  • P:前のウィンドウに移動する。
  • 0~9:指定されたウィンドウ番号に移動します。

ペインコマンド

  • %: 水平方向の分割を作成します。
  • ": 垂直方向の分割を作成します。
  • Hまたは左矢印:左ペインに移動します。
  • Iまたは右矢印:右ペインに移動します。
  • Jまたは下矢印:下のペインに移動します。
  • Kまたは上矢印:上のペインに移動します。
  • Q:ペイン番号の簡単な表示について。
  • O:ペインを順番に移動します。押すたびに次のペインに移動し、すべてのキーを通過します。
  • }: 現在のペインと次のペインの位置が入れ替わります。
  • {: 現在のペインと前のペインの位置が入れ替わります。
  • X:現在のペインを閉じる。

比較の方法

機能面では、screenとtmuxは似ていて、同じような主機能を備えています。これらの機能へのアクセス方法は明らかに異なっており、tmuxはよりスムーズで快適な方法で様々な機能を実装しています。しかし、違いはこれだけではありません。

tmuxでセッションやウィンドウの名前を変更できるのは非常にクリーンですし、セッションを再接続してもペインが保持されるのは画期的なことです。

一方、セッションを切り離し、再接続すると、画面は完全にペインを失います。これは、そもそも切り離しを避けるようになるほど厄介です。

tmuxは、信じられないほど柔軟なスクリプト機能をはじめ、他にも多くの機能を備えていますので、ぜひご自身でお確かめください。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ