nohupの記事で、「SSHが切れると実行中のコマンドが終了してしまう」問題と、コマンド単位の対策を紹介しました。この問題へのより強力な答えがtmux(ターミナルマルチプレクサ)です。tmuxは、コマンド1つを守るのではなく、ターミナルでの作業環境そのもの(セッション)をサーバー側で保持します。SSHが切れても、再接続すれば実行中の処理・画面の内容・作業状態がそっくりそのまま戻ってくるのです。
この記事では、実機のLinux(WSLのDebian)で、セッションを作って処理を実行し、接続を断ち切っても処理が続き、あとから画面ごと再確認できるという一連の流れを実際に検証しながら、tmuxの基本を整理します。長時間のビルドやデータ処理、不安定な回線からのサーバー作業では、tmuxがあるだけで安心感がまるで違います。
tmux new -s 名前でセッションを開始し、その中で普段どおり作業します。Ctrl+b→dでデタッチ(切り離し)。セッションはサーバー側で生き続けます。- 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 しても、そのセッションは終了する
実機でも、workとdeployの2つの名前付きセッションが同時に共存し、tmux kill-session -t deployで指定した片方だけが終了(workは残存)することを確認しました。セッションが1つだけならtmux attach(-t省略)で戻れます。なお、セッションの中でexitと打つと、そのセッション自体が終了します。「作業を残して抜けたい」ときはexitではなくデタッチ(Ctrl+b d)です。
最低限のキー操作
tmuxには画面分割など多くの機能がありますが、まずはこれだけで十分という操作を挙げます。すべてCtrl+bを押してから続けて押します。
| 操作 | 働き |
|---|---|
Ctrl+b → d |
デタッチ(作業を残して抜ける・最重要) |
Ctrl+b → c |
新しいウィンドウ(タブ)を作る |
Ctrl+b → n / p |
次/前のウィンドウへ切り替え |
Ctrl+b → % / " |
画面を左右 / 上下に分割 |
Ctrl+b → 矢印 |
分割した画面(ペイン)間を移動 |
Ctrl+b → [ |
スクロールモード(qで解除) |
特にスクロール(Ctrl+b [)は初見で戸惑うポイントです。tmuxの中ではマウスホイールや通常のスクロールが効かないことが多く、このスクロールモードに入って矢印キーやPageUpで過去の出力をさかのぼります(qで戻ります)。
nohupとの使い分け・注意点
nohupとtmuxは、どちらも「SSH切断から処理を守る」道具ですが、性格が異なります。
# nohup: 「このコマンド1つ」を切断から守る(付け忘れたら守れない) nohup ./long_job.sh > job.log 2>&1 & # tmux: 「作業環境ごと」守る。中で何をしても最初から安全 tmux new -s work ./long_job.sh # そのまま実行してよい # Ctrl+b d でデタッチ → いつでも attach で画面ごと戻れる
1つ注意があります。tmuxはサーバー側にインストールされている必要がありますが、共用レンタルサーバーには入っていないことが珍しくありません(実際に、当サイトが利用しているエックスサーバーの共用環境でもtmux・screenとも利用できないことを確認しています。root権限が無いため自分でのインストールも困難です)。そのような環境では、nohupが引き続き頼れる選択肢になります。一方、VPS・クラウド(EC2など)・自前のLinuxサーバーならapt install tmuxやyum install tmuxで簡単に導入できます。「tmuxが使える環境ならtmux、無ければnohup」という優先順位で覚えておくと実務で迷いません。
主なコマンド一覧
tmuxの要点をまとめます。
| コマンド | 働き |
|---|---|
tmux new -s 名前 |
名前付きセッションを開始 |
Ctrl+b → d |
デタッチ(作業を残して抜ける) |
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を使います。
よくある質問
tmux attachで作業の続きにそのまま戻れます。Ctrl+bを押してからd)は「セッションを生かしたまま画面から離れる」操作で、中の処理は動き続けます。一方exitはそのセッション自体を終了させるため、作業も終わります。作業を残して抜けたいときは必ずデタッチを使ってください。tmux attach -t 名前で戻れます。tmux capture-pane -t セッション名 -pで、セッションの画面内容を標準出力に取り出せます。実機でも、デタッチ中のセッションで進んでいたカウンタの出力をこの方法で確認しています。長時間ジョブの進み具合をちらっと見たいときに便利です。まとめ
tmux new -s 名前で開始、Ctrl+bdでデタッチ、tmux attachで復帰。- SSH切断でもセッションと処理は生き続けます(実証済み)。
tmux lsで一覧、kill-sessionで終了、capture-paneで覗き見。- 作業を残すなら
exitではなくデタッチ。スクロールはCtrl+b[。 - tmuxが無いレンタルサーバーではnohupを使います。
tmuxは、「SSHが切れたら作業が消える」という不安からあなたを解放してくれる道具です。覚えることは「new・デタッチ・attach」の3つだけ。VPSやクラウドでの長時間作業では、ログインしたらまずtmuxを習慣にすると、回線トラブルが怖くなくなります。
- grep(文字列検索)
- find(ファイル検索)
- sed(置換・行編集)
- awk(列抽出・集計)
- chmod(パーミッション)
- tar(圧縮・解凍)
- リダイレクトとパイプ
- ps・kill(プロセス管理)
- 環境変数とPATH
- ln(シンボリックリンク)
- cp・mv・rm(コピー/移動/削除)
- history(コマンド履歴)
- curl(HTTP通信・API)
- jq(JSON処理)
- vim(基本操作・終了方法)
- cron・crontab(定期実行)
- sort・uniq・wc(並べ替え/集計)
- xargs(一括処理)
- chown・chgrp(所有者/グループ変更)
- diff(ファイル比較)
- du・df(ディスク使用量)
- head・tail(先頭/末尾・ログ監視)
- alias(コマンドの別名)
- nohup(SSH切断対策)
- tmux(セッション管理)
- よく使うコマンドまとめ
- cd(ディレクトリ移動)
