tmux(ティーマックス)は、ターミナル・マルチプレクサ(Terminal Multiplexer)と呼ばれる種類のアプリで、1つのターミナル内で複数のセッションやウィンドウを管理できるツールです
簡単に言うと、ターミナル上で「仮想デスクトップ」のような環境を作れるアプリです
tmux の主な機能
- セッション管理
- ターミナルのプロセスをtmuxのセッションとして管理できる
- tmuxから切り離してもプロセスは継続して動作する(SSH切断後もOK)
- tmux attachで再接続可能
- ウィンドウとペインの分割
- 1つのtmuxセッション内で複数のウィンドウを開ける
- 画面を分割(ペイン分割)して、複数のプロセスを同時に表示できる
- プロセスの維持
- SSH接続が切れても、tmux内のプロセスは終了しない
- サーバー上で長時間実行するプログラム(例: Discord Bot、スクレイピング、サーバー監視など)に最適
- ショートカットキーで操作が便利
- Ctrl + B を押してから各種操作を実行(ウィンドウ切替、ペイン分割など)
tmux の基本コマンド
1. tmuxの起動
tmux
または、セッション名を指定して起動:
tmux new -s mysession
2. tmuxセッションからのデタッチ(切り離し)
tmux
を終了せずに、バックグラウンドに回す:
Ctrl + B → D
3. tmuxセッションに再接続
tmux attach -t mysession
4. tmuxセッションの一覧表示
tmux ls
5. tmuxセッションの終了
tmux kill-session -t mysession
または、tmux内で Ctrl + D を押す
tmux の活用例
- SSH接続での作業
- SSHが切れてもプログラムが止まらないので、サーバー管理に最適
- Discord BotやWeb APIの運用
- Pythonで作ったBotをtmux内で動かせば、ターミナルを閉じても動作し続ける
- 複数のタスクを同時に管理
- ターミナルを分割して、サーバーログ監視とアプリ実行を同時に行える。
Discord Botでの活用例
Ubuntu 20.04でtmuxを使ってDiscord Botを運用する手順を説明します
1. tmux のインストール(Ubuntu20.04)
まず、tmux がインストールされていない場合は、以下のコマンドでインストールします
sudo apt update
sudo apt install -y tmux
2. tmux セッションの作成
tmux セッションを作成し、その中でBotを起動します
tmux new -s discord-bot
ここで、discord-bot はセッション名で、好きな名前に変更できます
3. Discord Bot の起動
tmux
セッション内で、Botのディレクトリへ移動し、起動します
cd /path/to/your/discord-bot
python3 bot.py
4. tmux セッションからのデタッチ(切り離し)
Botを起動したまま、tmux セッションから抜けるには以下を押します
Ctrl + B → D
5. tmux セッションの再接続
Botを動作させたまま、tmux セッションに戻るには以下のコマンドを実行します
tmux attach -t discord-bot
6. tmux セッションの一覧確認
実行中のtmux セッションを確認するには以下を実行します。
tmux ls
7. tmux セッションの終了
Botを停止してセッションを終了する場合は、以下を実行します。
tmux kill-session -t discord-bot
または、tmux セッション内で Ctrl + D を押すことでセッションを終了できます。
追加: tmux を使ったBotの自動再起動
もしBotがエラーで落ちた際に自動で再起動させたい場合は、以下のようにwhileループを使います
tmux new -s discord-bot 'while true; do python3 bot.py; sleep 5; done'
これにより、Botがクラッシュしても5秒後に再起動するようになります
この方法で、Ubuntu 20.04上でtmuxを使ってDiscord Botを安定して運用できます
コメント