【tmux基本】SSH切断対策!「デタッチ/アタッチ」で作業状態を保持・復元する方法【Linuxコマンド入門 Part4-13】

バックグラウンド動作させるtmuxコマンドのデタッチ/アタッチを詳しく紹介。実用的な利用方法を紹介。Linuxコマンド入門第4シリーズ。

はじめに

サーバーで時間のかかるプログラム(例えば大容量データのバックアップや、AIの学習処理など)を実行している最中、「Wi-Fiが途切れてSSH接続が切れてしまった!」という経験はありませんか?

通常のターミナルで接続が切れると、裏で動いていた処理も道連れになって強制終了(死)してしまい、数時間の待機が水の泡になってしまいます。

これを完全に防ぎ、「PCを閉じても、ネットが切れても、裏で作業を継続させる」ことができるのが、前回紹介した多重化ツール「tmux」(Terminal Multiplexer)の便利なところです。 今回は、実務で絶対に欠かせない最強の保険機能「デタッチ」と「アタッチ」について解説します。

tmux

基本操作が知りたい方へtumxの導入から画面割などは以下の前回記事で紹介しています。

ターミナルを分割して作業効率Up,tmuxコマンドの導入からショートカットキー入門。実用的な利用方法を紹介。Linuxコマンド入門第4シリーズ。

【tmux入門】ターミナル画面を分割(ペイン)して複数作業を並行する基本の使い方【Linuxコマンド入門 Part4-12】

tmuxの使い方(画面分割,ペイン)を一発で習得!Ctrl+b操作・ショートカット早見表付きで、左右・上下分割や移動方法を初心者向けに解説。インストールからすぐ使える。

実用的な使い方としては、ノートPCなどからSSHでサーバ接続、時間のかかるAIの学習プロセスをtmuxで立ち上げる。学習開始してしまえば、ノートPCを閉じてもサーバ側では学習を続けてくれます。学習が終わったら(適当に通知システムなどを組んでおく)再度ノートPCなどから接続しtmuxからアタッチして続きの作業をするといった使い方ができます。

1. 【早見表】tmux セッション管理チートシート

とりあえず今すぐ使い方を知りたい!という方のための早見表です。

(※プレフィックス・キーは、デフォルトの Ctrl + b を想定しています)

やりたいことコマンド / 操作
今の作業を裏に隠す(デタッチ)Ctrl + b を押して離した後、d
裏で動いている作業の一覧を見るtmux ls
裏の作業を画面に呼び戻す(アタッチ)tmux a (または tmux attach-session
名前をつけて新しくtmuxを起動するtmux new -s [好きな名前]

たったこれだけで、あなたの作業はネットワーク切断の恐怖から完全に解放されます。

ここからは、この「デタッチ/アタッチ」がどのような仕組みで動いているのか、具体的な手順とともに解説します。

2. 「デタッチ」と「アタッチ」の仕組み

なぜ、SSHが切れてもtmuxの中の作業は死なないのでしょうか?

それは、tmuxが「サーバーの奥深くに置かれた、絶対に電源の落ちないモニター」のようなものだからです。

  • デタッチ (Detach: 切り離す)あなたが手元のPC(ターミナルソフト)から、その「奥深くのモニター」を見るのをやめて、ケーブルを引っこ抜く操作です。モニターから目を離しただけで、モニターの向こう側の処理は元気に動き続けています。
  • アタッチ (Attach: くっつける)再びケーブルを繋いで、「さっきのモニターの画面」を自分のPCに映し出す操作です。

Wi-Fiが切れてSSHが切断された場合、tmuxは自動的に「デタッチ」された状態になり、処理を安全に守ってくれるのです。

tmuxで起動したターミナルが終了するまでバックグラウンドで動作を続けることができることを表した画像

tmuxのセッション永続性

(画像はgemini nano banana 2を利用して作成.確認はしていますが間違いが含まれる可能性があります)

3. 【実践】意図的に作業を裏に隠して、復元してみよう

実際に、この機能を体験してみましょう。

ステップ1:時間のかかる処理(のフリ)を実行する

まずは tmux コマンドで起動し、分かりやすいように画面で動き続けるコマンド(例えば top コマンドなど)を実行しておきます。

# tmuxを起動
tmux

# 動き続けるコマンドを実行
top

ステップ2:作業を裏に隠す(デタッチ)

ここで、プレフィックス・キー(Ctrl + b)を押して指を離し、d を押します。

すると、top コマンドの画面がフッと消え、元の普通のターミナル画面に戻ります。

画面には [detached (from session 0)] というメッセージが出ているはずです。これで、作業を裏に隠すことに成功しました!

tmuxでデタッチしたときのターミナル画面の例

detachした時のターミナルの表示の一例

ステップ3:本当に裏で動いているか確認する

元のターミナルで、以下のコマンドを打ってみてください。

tmux ls

【実行結果】

0: 1 windows (created Fri Mar 27 05:00:25 2025)

「0番という名前のセッション(作業状態)が、裏で生きているよ」と教えてくれます。

※この状態でターミナルソフトを再起動しても、SSHを一旦切断しても問題ありません!

ステップ4:作業を呼び戻す(アタッチ)

それでは、裏で動かしている top コマンドを画面に呼び戻しましょう。以下のコマンドを打ちます。

tmux a

(※aattach-session の省略形です)

画面が切り替わり、見事に先ほどの top コマンドの画面が復活しました!

もちろん、画面を分割(ペイン)していた場合は、その分割状態も含めてすべて完璧に復元されます。

4. 【応用】複数の作業に「名前」をつける

実務に慣れてくると、「Webサーバーのログ監視用tmux」と「プログラム開発用tmux」など、複数のtmuxを裏で同時に動かしたくなります。

その場合、tmux a だと「どの作業を呼び戻すか」分からなくなってしまいます。

そこでおすすめなのが、tmuxを起動する時に「名前」をつけることです。

# "dev" という名前でtmuxを起動する
tmux new -s dev

裏に隠した(デタッチした)後、tmux ls を打つと、0 ではなく dev という名前で表示されます。

これを呼び戻す時は、以下のように名前を指定(-t = target)します。

# "dev" という名前の作業を呼び戻す
tmux a -t dev

これで、いくつものプロジェクトを並行して安全に管理できるようになります!

# 学習用のセッションを以下のような感じで作成するなどすると管理が楽です。
tmux new -s train_<modelname>_yyyy-03_1st

# 学習用のセッションでは、
# しっかり後処理しないとGPUを占有してしまったりするので後処理には気を付けましょう。

まとめ

  • デタッチ (Ctrl+bd): 作業を裏で動かしたまま、tmuxから抜け出す。
  • 確認 (tmux ls): 裏で生きているtmuxのリストを見る。
  • アタッチ (tmux a): 裏で動いている作業を画面に呼び戻す。
  • 最大のメリット: SSHが不意に切断されても、作業状態(と心の平穏)が完全に守られる。

時間がかかるコマンドを実行する前は、「とりあえずtmuxを立ち上げておく」という手癖をつけておきましょう。それだけで、取り返しのつかない大事故を防ぐことができます。

さて、これまで13回にわたって、alias.bashrcPS1、そして tmux と、あなた好みの最強のターミナル環境を作り上げてきました。

次回は、ここまでのまとめとして、おすすめの.bashrc tmuxの設定を公開します。これをコピペして、自分好みに改造してみてください。

linuxの環境設定、.bashrcなどのdotfileのプリセット集

【コピペOK】Linux環境設定おすすめプリセット置き場(.bashrc / tmux等)【随時更新】【Linuxコマンド入門 Part4-14】

Linuxの環境設定(.bashrcなど)のおすすめプリセットを公開。コピペでベースとなる環境が手に入ります。これをもとに自分好みに改造していってみてください。


第四回”Linuxコマンド入門 Part4 ~自分好みの環境を整える~”では、linuxでの作業を効率化し自分好みの環境を作り上げる方法を紹介しています

linuxターミナルを効率的に自分好みに改造する方法を紹介したシリーズのサムネイル 13 記事
シリーズ

Linuxコマンド入門 Part4 ~ターミナル操作の効率化とシェル環境のカスタマイズ~

Linuxで、コマンドライン操作を効率化したり、自分好みにカスタマイズする方法を学ぼう。

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero