unbutu20.04でtmuxを使ってDiscord botを運用

Server

tmux(ティーマックス)は、ターミナル・マルチプレクサ(Terminal Multiplexer)と呼ばれる種類のアプリで、1つのターミナル内で複数のセッションやウィンドウを管理できるツールです

簡単に言うと、ターミナル上で「仮想デスクトップ」のような環境を作れるアプリです


tmux の主な機能

  1. セッション管理
    • ターミナルのプロセスをtmuxのセッションとして管理できる
    • tmuxから切り離してもプロセスは継続して動作する(SSH切断後もOK)
    • tmux attachで再接続可能
  2. ウィンドウとペインの分割
    • 1つのtmuxセッション内で複数のウィンドウを開ける
    • 画面を分割(ペイン分割)して、複数のプロセスを同時に表示できる
  3. プロセスの維持
    • SSH接続が切れても、tmux内のプロセスは終了しない
    • サーバー上で長時間実行するプログラム(例: Discord Bot、スクレイピング、サーバー監視など)に最適
  4. ショートカットキーで操作が便利
    • 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を安定して運用できます

コメント