サーバー運用の現場で、こうした経験は一度はあるはずです。夜間バッチやログ集計、大量データのインポートなど、時間のかかる処理ほどSSH切断のリスクが付きまといます。
この記事では、screenコマンドの実践的な使い方を解説します。
デタッチ・アタッチの基本操作から、名前付きセッション管理、ログ記録、複数ウィンドウの切り替え、トラブル対処まで網羅します。
実行環境:RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済み
この記事のポイント
・screen -S 名前 でセッションを作成し、Ctrl+a d でデタッチできる
・SSH切断後も screen -r で元のセッションに復帰できる
・screen -ls でセッション一覧を確認し、複数セッションを管理できる
・nohupとの違いは「対話操作をそのまま再開」できるかどうか
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
screenコマンドとは?SSH切断に強い仮想端末マネージャ
screen(GNU Screen)は、1つのSSH接続の中で複数の仮想端末(ウィンドウ)を作成・管理できるターミナルマルチプレクサです。
screenが解決する問題は以下の3つです。
・SSH切断でプロセスが死ぬ問題:screenセッション内のプロセスはSSHが切れても生き続ける
・長時間処理の安全な実行:バックアップやDBインポートをSSH切断リスクなしで実行できる
・複数作業の並行管理:1つのSSH接続で複数のターミナルを切り替えて使える
nohupやdisownでもプロセスの継続は可能ですが、screenは「途中のコマンド操作に戻れる」点が決定的に異なります。nohupで起動したプロセスの途中経過を見るにはログファイルを読むしかありませんが、screenなら元の画面にそのまま復帰できます。
基本構文は次のとおりです。
screen [オプション]
インストール方法
RHEL 9やUbuntuでは、screenは標準ではインストールされていません。パッケージマネージャで追加します。
1. RHEL系(RHEL / Rocky Linux / AlmaLinux)にインストールする
# screenパッケージをインストールする # dnf install screen -y # バージョンを確認する # screen --version Screen version 4.09.01 (GNU) 20-Aug-23
2. Ubuntu / Debianにインストールする
$ sudo apt install screen -y $ screen --version Screen version 4.09.00 (GNU) 30-Jan-23
基本的な使い方(デタッチ・アタッチ)
screenの操作で最も重要なのが「デタッチ(セッションから離脱)」と「アタッチ(セッションに復帰)」です。この2つを覚えるだけで、SSH切断の不安はなくなります。
3. screenセッションを起動する
# screenコマンドでセッションを開始する [root@web01 ~]# screen # screen起動後(見た目は普通のシェルと同じ) [root@web01 ~]#
4. Ctrl+a d でデタッチする(セッションから離脱)
デタッチ(detach)は、セッションを動かしたまま「画面から離れる」操作です。
# screen内でtopを実行中の状態 [root@web01 ~]# top # ここで Ctrl+a を押してから d を押す [detached from 23456.pts-0.web01] [root@web01 ~]#
【重要】操作は2段階です。まず Ctrl+a を押して指を離し、そのあとに d を単独で押してください。同時押しではありません。
5. screen -r でアタッチする(セッションに復帰)
デタッチしたセッションに戻るには
screen -r を実行します。# セッションに復帰する [root@web01 ~]# screen -r # topが動いている画面がそのまま表示される top - 14:25:03 up 45 days, 3:12, 1 user, load average: 0.08, 0.12, 0.09 Tasks: 142 total, 1 running, 141 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.2 us, 0.5 sy, 0.0 ni, 98.0 id, 0.3 wa, 0.0 hi, 0.0 si
screen -r を実行すれば、切断前のセッションにそのまま復帰できます。6. screen -ls でセッション一覧を確認する
[root@web01 ~]# screen -ls There are screens on: 23456.pts-0.web01 (04/10/2026 02:15:30 PM) (Detached) 23489.backup-job (04/10/2026 02:30:45 PM) (Detached) 2 Sockets in /run/screen/S-root.
・Detached:デタッチ済み。
screen -r で復帰できる状態・Attached:別の端末がアタッチ中。
screen -d -r で強制的に奪い取れる・Dead:異常終了したセッション。
screen -wipe で削除できる名前付きセッションで複数作業を管理する
7. -S オプションでセッションに名前を付ける
複数のscreenセッションを使い分ける場合は、起動時に名前を付けるのが鉄則です。
# 名前付きでセッションを作成する [root@web01 ~]# screen -S backup-job # 別のセッションを作成する(デタッチ後に実行) [root@web01 ~]# screen -S log-monitor # セッション一覧を確認する [root@web01 ~]# screen -ls There are screens on: 23501.backup-job (04/10/2026 02:40:10 PM) (Detached) 23515.log-monitor (04/10/2026 02:41:22 PM) (Detached) 2 Sockets in /run/screen/S-root. # 名前を指定して復帰する [root@web01 ~]# screen -r backup-job
-S で名前を付けてください。8. セッションを終了する
セッション内で
exit を実行するか、Ctrl+d を入力するとセッションが完全に終了します。# screen内で実行する [root@web01 ~]# exit [screen is terminating] [root@web01 ~]#
応用・実務Tips
9. セッション内の出力をログファイルに記録する
screen起動時に
-L オプションを付けると、セッション内のすべての出力がファイルに記録されます。# ログ記録付きでセッションを開始する [root@web01 ~]# screen -L -S db-import # ログファイル名を指定する場合(-Logfileオプション) [root@web01 ~]# screen -L -Logfile /var/log/screen-db-import.log -S db-import # デフォルトのログファイル名 [root@web01 ~]# ls screenlog.0 screenlog.0
10. 1つのセッション内で複数ウィンドウを使う
screenは1つのセッション内に複数のウィンドウ(仮想端末)を持てます。ウィンドウ0でtopを表示しながら、ウィンドウ1でログを監視し、ウィンドウ2で作業するといった使い方ができます。
・Ctrl+a c:新しいウィンドウを作成する
・Ctrl+a n:次のウィンドウに切り替える
・Ctrl+a p:前のウィンドウに切り替える
・Ctrl+a ":ウィンドウ一覧を表示して選択する
・Ctrl+a 0~9:番号を指定してウィンドウを切り替える
# ウィンドウ一覧を表示する(Ctrl+a " の実行結果) Num Name Flags 0 bash $ 1 bash $ 2 bash $
11. 設定ファイル(~/.screenrc)をカスタマイズする
screenの動作はホームディレクトリの
.screenrc ファイルで変更できます。実務で役立つ設定例を紹介します。# ~/.screenrc の設定例 # 起動メッセージを非表示にする startup_message off # スクロールバックバッファを10000行に設定する defscrollback 10000 # ステータスバーを表示する hardstatus alwayslastline "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= %Y-%m-%d %c" # 文字コードをUTF-8にする defencoding utf-8 encoding utf-8 utf-8
defscrollback はデフォルトの100行では足りないことが多いので、10000行程度に増やしておくことをおすすめします。12. screen vs tmux:どちらを使うべきか
tmuxはscreenの後継として開発されたターミナルマルチプレクサです。機能面ではtmuxが優れている部分が多くあります。
| 比較項目 | screen | tmux |
|---|---|---|
| 画面分割 | 垂直分割のみ(水平分割はパッチが必要) | 垂直・水平分割の両方に標準対応 |
| ステータスバー | なし(.screenrcで設定が必要) | 標準で画面下部に表示 |
| プレフィックスキー | Ctrl+a | Ctrl+b |
| 設定ファイル | ~/.screenrc | ~/.tmux.conf |
| 既存サーバーでの普及度 | 高い(古い環境にも入っている) | 新しめの環境に多い |
新規構築するサーバーならtmuxを選ぶのが合理的です。ただし、本番環境で「今すぐscreenが必要」になる場面は現実に多いので、screenの基本操作は押さえておいて損はありません。
トラブルシュート
「There is no screen to be resumed.」が表示された場合
復帰できるデタッチ済みセッションが存在しない状態です。
[root@web01 ~]# screen -r There is no screen to be resumed. [root@web01 ~]# screen -ls No Sockets found in /run/screen/S-root.
・セッション内で exit を実行してセッションが終了している
・サーバーが再起動されてセッションが消えている
・別のユーザーで起動したセッションを自分のユーザーで探している
「There are several suitable screens on:」が表示された場合
複数のデタッチ済みセッションがあり、どれに復帰するか指定が必要です。
[root@web01 ~]# screen -r There are several suitable screens on: 23501.backup-job (Detached) 23515.log-monitor (Detached) Type "screen [-d] -r [pid.]tty.host" to resume one of them. # セッション名を指定して復帰する [root@web01 ~]# screen -r backup-job
Attached状態のセッションに強制復帰する方法
SSH接続が切れたのにAttached状態のまま残っている場合があります。
-d -r オプションで強制的にデタッチしてからアタッチします。# Attached状態のセッションを確認する [root@web01 ~]# screen -ls There are screens on: 23501.backup-job (04/10/2026 02:40:10 PM) (Attached) 1 Socket in /run/screen/S-root. # 強制的にデタッチして復帰する [root@web01 ~]# screen -d -r backup-job
Deadセッションが残っている場合
プロセスの異常終了などでDead状態のセッションが残ることがあります。
screen -wipe で一括削除できます。[root@web01 ~]# screen -ls There are screens on: 23501.backup-job (04/10/2026 02:40:10 PM) (Dead ???) 1 Socket in /run/screen/S-root. Remove dead screens with 'screen -wipe'. # Dead状態のセッションを削除する [root@web01 ~]# screen -wipe There are screens on: 23501.backup-job (04/10/2026 02:40:10 PM) (Removed) 1 socket wiped out. No Sockets found in /run/screen/S-root.
本記事のまとめ
screenコマンドでよく使う操作をまとめます。
| やりたいこと | コマンド |
|---|---|
| セッションを開始する | screen |
| 名前付きでセッションを開始する | screen -S セッション名 |
| セッションからデタッチする | Ctrl+a d |
| セッションに復帰する | screen -r |
| 名前を指定して復帰する | screen -r セッション名 |
| セッション一覧を確認する | screen -ls |
| ログ記録付きで開始する | screen -L -S セッション名 |
| Attached状態のセッションに強制復帰する | screen -d -r セッション名 |
| Dead状態のセッションを削除する | screen -wipe |
screenは「SSH切断 = プロセス死亡」というサーバー運用最大の不安を解消するコマンドです。
まずは
screen -S 名前 で起動して Ctrl+a d → screen -r の流れだけ覚えてください。これだけで、夜間バッチやDBインポートの安全性が段違いに上がります。関連コマンドも合わせて確認しておくと、プロセス管理の引き出しが増えます。
・nohup・bg・disownでプロセスをバックグラウンドで実行する方法
・topコマンドでCPU・メモリ使用率を確認する方法
SSH切断でプロセスが死んで、冷や汗をかいた経験はありませんか?
screenやnohupの使い方を覚えても、「本番でどう使い分けるか」は断片的な情報だけでは身につきません。現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
