tmuxで多重端末
回線が切れると、作業も死ぬ
SSH で入って長い処理を始めたとします。パッケージの更新、大きなファイルの転送、データベースの移行。そこで回線が切れると、実行中のコマンドごと道連れになります。ノートを閉じただけでも同じです。
原因は親子関係にあります。打ったコマンドは、その SSH セッションの子として動いています。親が消えれば子も終わらされます。転送の途中で死ねば、中途半端なファイルだけが残ります。
解決は、接続とは別の場所でコマンドを動かすことです。そのための道具が tmux です。
セッションを作って、そこに住む
tmux new -s deploy-s はセッションに付ける名前です。実行すると画面が切り替わり、下に横帯が出ます。ここから先で打つコマンドは、SSH ではなく tmux の子になります。
名前を付けるのは、あとで戻るときに指定するためです。省略すると 0 や 1 という番号になり、複数あると見分けが付かなくなります。
離れて、戻る
離れるときは Ctrl-b を押してから d です。Ctrl-b は tmux への合図で、続けて押すキーが命令になります。d は detach、離れるという意味です。
離れても中身は動き続けます。SSH を切っても、ノートを閉じても同じです。あとで入り直して戻れます。
tmux ls
# deploy: 1 windows (created Fri Aug 8 12:00:00 2026)
tmux attach -t deployls で一覧、attach -t <名前> で戻ります。離れている間に終わった処理の出力も、そのまま残っています。
スクリプトから使う
人が操作しないときは、画面を開かずにセッションを作れます。
tmux new -d -s deploy-d を付けると、作るだけで中に入りません。中のセッションへコマンドを送るには send-keys を使います。
tmux send-keys -t deploy 'date > /root/from-tmux.txt' Enter最後の Enter は、改行キーを押す、という指定です。これが無いと文字が入力欄に置かれるだけで実行されません。忘れやすいところです。
中の様子を覗くこともできます。
tmux capture-pane -t deploy -p-p は、拾った内容をそのまま画面に出す指定です。自動化した処理が中で何を言っているかを確かめるのに使えます。
終わらせる
tmux kill-session -t deploy用が済んだセッションは畳みます。放っておくと、何をしていたか分からないセッションが溜まっていきます。tmux ls を時々見る癖を付けてください。
覚えるのは3つでいい
tmux には画面分割など多くの機能がありますが、運用で本当に効くのは次の3つです。
tmux new -s <名前>— 作るCtrl-bd— 離れるtmux attach -t <名前>— 戻る
これだけで、長い処理を安全に走らせられます。
手を動かす
名前を付けたセッションを画面を開かずに作り、そこへコマンドを送って実行させます。中の様子も覗きます。