ターミナル作業を中断して後で再開したい。
そんなときtmuxのセッション機能が役立ちます1。
1つのセッションしか利用しないなら、以下のかんたんなコマンドだけでも利用できます。
tmux
# Ctrl + b → d (デタッチ) または、ターミナルを終了
tmux a
# exit
tmux kill-serverCode language: PHP (php)
1. セッションを作る(tmux new -s)
tmuxを起動すると、自動的にセッションが作られます。
tmux
名前を付けたい場合はこうします2。
tmux new -s work
Code language: JavaScript (javascript)
workという名前のセッションができます。
作業内容が分かる名前を付けておくと、後で探しやすくなります。
2. セッションから離れる(C-b d)
作業中のセッションを残したまま、一時的に抜け出すには「デタッチ(detach)」を使います3。
Ctrl + b → d
この操作で通常のターミナルに戻りますが、tmuxの中で動いていたプログラムはそのまま動き続けます4。
SSHが切れても作業は止まりません。
サーバーで長時間かかる処理を走らせるとき、セッションを残しておけば途中で接続が切れても安心です5。
複数の作業を並行するときも、それぞれセッションを分けておくと整理しやすくなります。
3. セッションに戻る(tmux attach -t)
デタッチしたセッションに戻るには「アタッチ(attach)」します6。
tmux attach
tmux a
複数のセッションがある場合は、名前を指定します7。
tmux attach -t work
tmux a -t work
どんなセッションがあるか確認したいときは、リスト表示が使えます8。
tmux ls
これでセッション名と状態が一覧で見られます。
4. セッションの終了
不要になったセッションはexitコマンドで終了するか、tmux kill-session -t セッション名で削除しましょう9。
tmuxセッション中にデタッチではなく、exitをコマンドすれば、終了されます。
exitCode language: PHP (php)
また、セッション外からコマンドで終了するには、kill-sessionでセッション名を指定します。
tmux kill-session -t <セッション名>
tmux kill-serverCode language: HTML, XML (xml)
kill-serverでは、すべてのセッションを終了できます。
- tmuxは「terminal multiplexer」の略で、1つのターミナル内で複数の仮想端末環境を管理できるツールです。 – tmuxとは何か?複数のターミナルを一画面で管理できるツールの特徴と活用シーンを詳しく解説
newは新規セッション作成コマンド、-sオプションはセッション名(session name)を指定するためのものです。セッション名は後からtmux rename-sessionコマンドで変更することもできます。 – tmuxを使いこなそう(ウインドウ、ペイン、セッション、アタッチ、デタッチ)- より正確には、Ctrl-bを押してから一度キーを離し、その後dを押します。この操作により、SSH接続が切れてもサーバー上でtmuxセッションとその中で実行中のプロセスは維持され続けます。 – 【tmuxの使い方】ssh接続が切れてもセッションを保持する方法
- tmux内で起動したフォアグラウンドプロセスは、デタッチ後もtmuxセッション内で実行され続けます。SSH接続が切断されると通常は
SIGHUPシグナルが送られてプロセスが終了しますが、tmuxがこれを防ぎます。 – 切断後もリモートSSHセッションとプロセスを維持する5つの方法 - tmuxは特にSSH経由でのリモートサーバー作業で威力を発揮します。ネットワーク切断時にもセッションが維持されるため、長時間かかるビルドやデータ処理、バッチ実行などを安全に行えます。 – tmuxを使ってSSHの接続が切れてもコマンドを動かし続ける
tmux attachはtmux aと短縮することもできます。また、tmux attach-sessionが正式な完全形のコマンド名です。 – tmux: How to attach and reattach sessions- 引数なしで
tmux attachを実行すると、最後にデタッチしたセッションに自動的に接続されます。特定のセッションを指定したい場合は-t(target)オプションでセッション名を指定します。 – tmux の初心者向けガイド tmux lsはtmux list-sessionsの短縮形です。出力には、セッション名、ウィンドウ数、作成日時、画面サイズ、接続状態(attached/detached)などが表示されます。 – 【Linux】tmuxコマンドのデタッチとアタッチ- 放置されたセッションはサーバーリソースを消費し続けるため、定期的な整理が推奨されます。 – 【AWS/Linux】tmux コマンド チートシート