Linuxでtmuxを使用する方法(および画面よりも優れている理由)
公開: 2022-01-29 Linux tmux
コマンドは、 screen
のようなターミナルマルチプレクサです。 その支持者は多く、声を上げているので、2つを比較することにしました。 tmux
は本当に優れているのでしょうか、それともあなたが知っていることを好む場合にすぎないのでしょうか?
tmuxとscreen
tmux
とscreen
コマンドはどちらもターミナルマルチプレクサです。 これらを使用すると、1つのターミナルウィンドウ内に複数のウィンドウを配置したり、それらの間を行ったり来たりすることができます。 ウィンドウはペインに分割でき、各ペインには独立したコマンドラインがあります。
セッションを切り離して、バックグラウンドで実行されるヘッドレスエンティティになることもできます。セッションを起動したターミナルウィンドウを閉じることもできます。 準備ができたら、新しいターミナルウィンドウを開いて、まだ実行中のセッションを再接続できます。 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」が表示されます。
さらにウィンドウを追加する
現在のセッションで新しいウィンドウを作成するには、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を押すと、そのセッションが切り離されます。
「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を押してから、上矢印、下矢印、左矢印、または右矢印のいずれかを押します。
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・patch・convert・rclone・shred・srm | |
プロセス | エイリアス・screen・top・nice・renice・progress・strace・systemd・tmux・chsh・history・at・batch・free・which・dmesg・chfn・usermod・ps・chroot・xargs・tty・pinky・lsof・vmstat・タイムアウト・wall・yes・kill・sleep・sudo・su・time・groupadd・usermod・groups・lshw・shutdown・reboot・halt・poweroff・passwd・lscpu・crontab・date・bg・fg | |
ネットワーキング | netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw |
関連:開発者と愛好家のための最高のLinuxラップトップ