【Linux】tmuxの使い方|SSH切断しても作業が消えないセッション管理・デタッチ/アタッチ

nohupの記事で、「SSHが切れると実行中のコマンドが終了してしまう」問題と、コマンド単位の対策を紹介しました。この問題へのより強力な答えがtmux(ターミナルマルチプレクサ)です。tmuxは、コマンド1つを守るのではなく、ターミナルでの作業環境そのもの(セッション)をサーバー側で保持します。SSHが切れても、再接続すれば実行中の処理・画面の内容・作業状態がそっくりそのまま戻ってくるのです。

この記事では、実機のLinux(WSLのDebian)で、セッションを作って処理を実行し、接続を断ち切っても処理が続き、あとから画面ごと再確認できるという一連の流れを実際に検証しながら、tmuxの基本を整理します。長時間のビルドやデータ処理、不安定な回線からのサーバー作業では、tmuxがあるだけで安心感がまるで違います。

先に結論

  • tmux new -s 名前でセッションを開始し、その中で普段どおり作業します。
  • Ctrl+bdでデタッチ(切り離し)。セッションはサーバー側で生き続けます。
  • SSHが不意に切れても、デタッチと同じ扱いで作業は失われません。
  • 再接続後、tmux attach -t 名前画面ごと作業に戻れます
  • tmux lsで一覧、tmux kill-session -t 名前で終了です。
  • コマンド1つだけならnohup作業環境ごと守るならtmuxと使い分けます。

SSH切断でコマンドが止まる仕組みはnohupの記事、実行中プロセスの確認はps・kill、SSH接続の効率化は~/.ssh/configもあわせて参考になります。

スポンサーリンク

tmuxの考え方:セッションはサーバー側に住んでいる

tmuxを理解する鍵は、「ターミナルの画面と作業状態が、SSH接続ではなくサーバー側のtmuxサーバーに保存されている」という点です。あなたのSSH接続は、そのセッションを「覗いている」だけ。覗くのをやめても(切断しても)、セッション本体は動き続けます。

基本の流れ
# 1. 名前を付けてセッションを開始(例: work)
tmux new -s work

# → 見た目は普通のターミナル。この中で普段どおり作業する
./long_build.sh

# 2. Ctrl+b を押してから d でデタッチ(切り離し)
#    → 元のシェルに戻るが、セッションと処理は生き続ける

# 3. あとで(再ログイン後でも)セッションに戻る
tmux attach -t work
# → 実行中の処理・画面がそのまま表示される

tmuxの操作はCtrl+b(プレフィックスキー)を押してから、続けて別のキーを押すのが基本です。最初に覚えるのはd(デタッチ)ただ1つで構いません。「tmux newで入り、Ctrl+b dで抜け、tmux attachで戻る」——この3つの動きがtmuxの核心です。

【実証】接続が切れても処理は続く

本当に「切断しても処理が続く」のかを、実機で確認しました。セッションの中で5秒かかるカウンタ処理を開始し、セッションを作ったシェルを即座に終了(SSH切断に相当)してから、別のシェルで様子を見ます。

切断をまたいで処理が続く(再現)
# デタッチ状態でセッションを作り、その中でカウンタを実行
tmux new-session -d -s work
tmux send-keys -t work 'for i in 1 2 3 4 5; do echo "count: $i"; sleep 1; done' Enter

# ここでセッションを作ったシェルを終了(=SSH切断に相当)

# --- 別のシェル(再ログイン後のイメージ)から ---
tmux ls
# work: 1 windows (created Fri Jul 10 11:13:20 2026)
#   ↑ セッションは生きている

# 画面の内容を確認(attachせずに覗く方法)
tmux capture-pane -t work -p
# count: 1
# count: 2
# ...
# count: 5   ← 切断中も処理が進んでいた!
切断中もカウンタが最後まで進んでいた(実証)

実機で、デタッチ状態のセッション内で「1秒ごとに数を数える」処理を開始し、セッションを作った親シェルを即座に終了させました。数秒後にまったく別のシェルからtmux lsを実行すると、セッションworkは生きたまま一覧に表示され、psでも処理中のsleepプロセスが確認できました。さらにtmux capture-pane -t work -pで画面の中身を覗くと、count: 1からcount: 5まで、切断中も1秒ごとに出力が積み重なっていたことが確認できました。これがtmuxの本質です。SSH接続の生死とセッションの生死が完全に分離しているため、不意の切断・意図的なデタッチのどちらでも、作業は一切失われません。nohupのように「事前にコマンドへ付けておく」必要すらなく、セッションの中で行うすべての作業が最初から守られています

セッションの一覧・複数管理・終了

セッションは名前を付けて複数持てます。「ビルド用」「ログ監視用」のように用途別に分けると便利です。

セッションの管理
# セッション一覧
tmux ls
# deploy: 1 windows (created Fri Jul 10 11:13:27 2026)
# work: 1 windows (created Fri Jul 10 11:13:20 2026)

# 名前を指定してアタッチ
tmux attach -t deploy

# セッションを終了する(中の処理ごと終わる)
tmux kill-session -t deploy

# セッション内で exit しても、そのセッションは終了する

実機でも、workdeploy2つの名前付きセッションが同時に共存し、tmux kill-session -t deploy指定した片方だけが終了workは残存)することを確認しました。セッションが1つだけならtmux attach-t省略)で戻れます。なお、セッションの中でexitと打つと、そのセッション自体が終了します。「作業を残して抜けたい」ときはexitではなくデタッチ(Ctrl+b dです。

最低限のキー操作

tmuxには画面分割など多くの機能がありますが、まずはこれだけで十分という操作を挙げます。すべてCtrl+bを押してから続けて押します。

操作 働き
Ctrl+bd デタッチ(作業を残して抜ける・最重要)
Ctrl+bc 新しいウィンドウ(タブ)を作る
Ctrl+bn / p 次/前のウィンドウへ切り替え
Ctrl+b% / " 画面を左右 / 上下に分割
Ctrl+b矢印 分割した画面(ペイン)間を移動
Ctrl+b[ スクロールモード(qで解除)

特にスクロール(Ctrl+b [は初見で戸惑うポイントです。tmuxの中ではマウスホイールや通常のスクロールが効かないことが多く、このスクロールモードに入って矢印キーやPageUpで過去の出力をさかのぼります(qで戻ります)。

nohupとの使い分け・注意点

nohuptmuxは、どちらも「SSH切断から処理を守る」道具ですが、性格が異なります。

nohupとtmuxの使い分け
# nohup: 「このコマンド1つ」を切断から守る(付け忘れたら守れない)
nohup ./long_job.sh > job.log 2>&1 &

# tmux: 「作業環境ごと」守る。中で何をしても最初から安全
tmux new -s work
./long_job.sh        # そのまま実行してよい
# Ctrl+b d でデタッチ → いつでも attach で画面ごと戻れる
レンタルサーバーにはtmuxが無いことも

1つ注意があります。tmuxサーバー側にインストールされている必要がありますが、共用レンタルサーバーには入っていないことが珍しくありません(実際に、当サイトが利用しているエックスサーバーの共用環境でもtmuxscreenとも利用できないことを確認しています。root権限が無いため自分でのインストールも困難です)。そのような環境では、nohupが引き続き頼れる選択肢になります。一方、VPS・クラウド(EC2など)・自前のLinuxサーバーならapt install tmuxyum install tmuxで簡単に導入できます。「tmuxが使える環境ならtmux、無ければnohup」という優先順位で覚えておくと実務で迷いません。

主なコマンド一覧

tmuxの要点をまとめます。

コマンド 働き
tmux new -s 名前 名前付きセッションを開始
Ctrl+bd デタッチ(作業を残して抜ける)
tmux ls セッション一覧
tmux attach -t 名前 セッションに再接続
tmux kill-session -t 名前 セッションを終了
tmux capture-pane -t 名前 -p attachせずに画面内容を確認

よくある失敗

exitで抜けてセッションごと消してしまう

exitはセッション終了です。作業を残すならCtrl+b d(デタッチ)で抜けます。

スクロールできず過去の出力が見られない

Ctrl+b [でスクロールモードに入ります。qで解除です。

attachしたら「sessions should be nested with care」と出る

tmuxの中でさらにattachしようとしています。すでにセッション内にいないか確認します。

セッション名を忘れて戻れない

tmux lsで一覧を確認できます。1つだけならtmux attachだけでも戻れます。

レンタルサーバーで使えない

共用レンタルサーバーにはtmuxが無いことがあります。その場合はnohupを使います。

よくある質問

Qtmuxは何が便利なのですか?
Aターミナルの作業環境(セッション)をサーバー側で保持してくれるため、SSHが切れても実行中の処理や画面が失われません。実機でも、セッションを作ったシェルを終了させたあとも中の処理が進み続け、別のシェルから画面ごと確認できることを検証しています。再接続すればtmux attachで作業の続きにそのまま戻れます。
Qデタッチとexitの違いは何ですか?
Aデタッチ(Ctrl+bを押してからd)は「セッションを生かしたまま画面から離れる」操作で、中の処理は動き続けます。一方exitはそのセッション自体を終了させるため、作業も終わります。作業を残して抜けたいときは必ずデタッチを使ってください。
QSSHが不意に切れた場合もデタッチと同じ扱いになりますか?
Aはい。tmuxのセッションはSSH接続とは独立してサーバー側で動いているため、意図しない切断でもセッションは生き残ります。実機でも、セッションを作った親シェルを即座に終了させる形で切断を再現し、処理が最後まで進んでいたことをcapture-paneで確認しています。再ログイン後にtmux attach -t 名前で戻れます。
Qnohupとtmuxはどちらを使うべきですか?
Aコマンド1つだけを切断から守りたい・tmuxが無い環境ならnohup、対話的な作業全体を守りたい・途中経過も画面ごと確認したいならtmuxが向いています。なお共用レンタルサーバーにはtmuxが入っていないことがあり(実際にエックスサーバーの共用環境では利用できないことを確認しています)、その場合はnohupが選択肢になります。
Qattachせずにセッションの中の様子だけ見られますか?
Atmux capture-pane -t セッション名 -pで、セッションの画面内容を標準出力に取り出せます。実機でも、デタッチ中のセッションで進んでいたカウンタの出力をこの方法で確認しています。長時間ジョブの進み具合をちらっと見たいときに便利です。

まとめ

  • tmux new -s 名前で開始、Ctrl+b dでデタッチ、tmux attachで復帰
  • SSH切断でもセッションと処理は生き続けます(実証済み)。
  • tmux lsで一覧、kill-sessionで終了、capture-paneで覗き見。
  • 作業を残すならexitではなくデタッチ。スクロールはCtrl+b [
  • tmuxが無いレンタルサーバーではnohupを使います。

tmuxは、「SSHが切れたら作業が消える」という不安からあなたを解放してくれる道具です。覚えることは「new・デタッチ・attach」の3つだけ。VPSやクラウドでの長時間作業では、ログインしたらまずtmuxを習慣にすると、回線トラブルが怖くなくなります。