tmux・byobuの利用#
ターミナル多重接続ツールとは#
ターミナル多重接続(ターミナルマルチプレクサ)ツールは,一つのターミナルウィンドウ内で複数のシェルセッションを管理できるソフトウェアである.主な機能として以下がある:
セッションの永続化:SSH接続が切れてもプロセスが継続する
画面分割:一つのウィンドウ内で複数のペインを表示できる
セッション共有:複数のクライアントから同じセッションに接続できる
ロボット開発では,リモートでロボットPCに接続して作業することが多く,ネットワーク切断時にも作業を継続できるこれらのツールが非常に有用である.
tmuxの利用#
tmux(terminal multiplexer)は,最も広く使われているターミナル多重接続ツールである.軽量で高速,かつ豊富なカスタマイズ性を持つ.
インストール#
以下のコマンドでインストールできる:
$ sudo apt install tmux
基本的な使い方#
セッションの開始#
$ tmux
このコマンドで新しいtmuxセッションが開始される.
セッションのデタッチ(detach)#
tmuxセッション内で以下のキーを押す:
Ctrl+b d
Ctrl+bはtmuxのプレフィックスキーで,その後にdを押すとデタッチされる.デタッチ後もセッションはバックグラウンドで実行され続ける.
セッションのアタッチ(attach)#
デタッチしたセッションに再接続する:
$ tmux attach
または,特定のセッションに接続する場合:
$ tmux attach -t セッション名
セッション一覧の表示#
$ tmux ls
tmuxの主要なショートカット#
全てのtmuxコマンドはCtrl+b(プレフィックス)の後に特定のキーを押すことで実行される.
ショートカット |
動作 |
|---|---|
|
セッションをデタッチ |
|
新しいウィンドウを作成 |
|
ペインを縦に分割 |
|
ペインを横に分割 |
|
ペイン間を移動 |
|
次のウィンドウに移動 |
|
前のウィンドウに移動 |
|
指定番号のウィンドウに移動 |
|
現在のペインを閉じる |
|
現在のウィンドウを閉じる |
|
スクロールモードに入る( |
tmuxの利点#
標準的なツール:多くのLinuxディストリビューションで標準搭載
軽量:リソース使用量が少ない
高度なカスタマイズ:設定ファイル(
~/.tmux.conf)で自由に設定変更可能豊富なプラグイン:機能拡張が容易
リモート作業での活用例#
SSH経由でロボットPCに接続して作業する場合:
# ローカルPCから
$ ssh robot@192.168.1.100
# ロボットPC上で
$ tmux
# 長時間かかる処理を実行
$ ros2 launch jedy_bringup jedy_bringup.launch.py
# Ctrl+b d でデタッチ
# SSH接続を切断しても,roslaunchは継続実行される
後で再接続する場合:
$ ssh robot@192.168.1.100
$ tmux attach
# 以前の画面がそのまま表示される
byobuの利用#
byobuは,tmuxまたはscreenをバックエンドとして使用するラッパーツールである.tmuxに比べてユーザーフレンドリーな機能キーを提供し,初心者でも使いやすい.
インストール#
以下のコマンドでインストールできる:
$ sudo apt install byobu
基本的な使い方#
セッションの開始#
$ byobu
このコマンドで新しいbyobuセッションが開始される.デフォルトではtmuxがバックエンドとして使用される.
セッションのデタッチ(detach)#
byobuセッション内で以下のキーを押す:
F6
デタッチされると,以下のように表示される:
[detached (from session _1-7882)]
デタッチ後もセッションはバックグラウンドで実行され続ける.
セッションのアタッチ(attach)#
別のターミナルや別のPCから,以下のコマンドでセッションに再接続できる:
$ byobu
既存のセッションがあれば自動的にアタッチされる.
byobuの主要なショートカット#
ショートカット |
動作 |
|---|---|
|
セッションをデタッチ |
|
新しいウィンドウを作成 |
|
ペインを縦に分割 |
|
ペインを横に分割 |
|
前のウィンドウに移動 |
|
次のウィンドウに移動 |
|
前のペインに移動 |
|
次のペインに移動 |
|
ウィンドウの名前を変更 |
|
byobuの設定メニューを表示 |
byobuの利点#
ファンクションキーベース:tmuxのプレフィックスキーを覚える必要がない
視覚的なステータスバー:CPU使用率,メモリ使用率,時刻などが表示される
初心者に優しい:直感的な操作が可能
ネットワーク切断時の復旧#
リモートPCからロボットPCにSSH接続してbyobuで作業している場合,ワイヤレスネットワークの不調などでターミナル接続が切れることがある.この場合,自動的にデタッチが呼ばれ,ネットワークが復旧してからbyobuコマンドでアタッチすると,ネットワークが切れる前のターミナルを再開できる.
tmuxとbyobuの使い分け#
両者の特徴を踏まえて,用途に応じて使い分けると良い:
tmuxを選ぶべき場合#
カスタマイズ性を重視:設定ファイルで細かく調整したい
軽量性を重視:リソースを最小限に抑えたい
標準的な環境:他のLinuxシステムでも同じ操作感を得たい
プラグインを活用:tmux-resurrect,tmux-continuum等を使いたい
byobuを選ぶべき場合#
初めて使う:ターミナル多重接続ツールに慣れていない
視覚的な情報が欲しい:ステータスバーでシステム情報を確認したい
ファンクションキーが使いやすい:プレフィックスキーを覚えたくない
まとめ#
tmuxとbyobuは,ロボットプログラミング演習において非常に有用なツールである.特に以下のような場面で活躍する:
リモート作業時:SSH接続が切れても作業が継続される
複数プロセスの同時実行:複数のROSノードを異なるペインで起動・監視できる
長時間実行タスク:ロボットの学習やデータ収集などの長時間タスクを安全に実行できる
まずはtmuxから始めて,基本的な操作に慣れることを推奨する.より視覚的なインターフェースが必要な場合は,byobuを試してみると良い.