screenコマンドでSSH切断後もプロセスを実行し続ける方法|デタッチ・アタッチの使い方も


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > screenコマンドでSSH切断後もプロセスを実行し続ける方法|デタッチ・アタッチの使い方も
「SSH接続で作業中に回線が切れて、実行途中の処理が全部消えてしまった」
サーバー運用の現場で、こうした経験は一度はあるはずです。夜間バッチやログ集計、大量データのインポートなど、時間のかかる処理ほどSSH切断のリスクが付きまといます。

この記事では、screenコマンドの実践的な使い方を解説します。
デタッチ・アタッチの基本操作から、名前付きセッション管理、ログ記録、複数ウィンドウの切り替え、トラブル対処まで網羅します。

実行環境:RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済み

この記事のポイント

・screen -S 名前 でセッションを作成し、Ctrl+a d でデタッチできる
・SSH切断後も screen -r で元のセッションに復帰できる
・screen -ls でセッション一覧を確認し、複数セッションを管理できる
・nohupとの違いは「対話操作をそのまま再開」できるかどうか



「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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 ~]#

screenを起動すると、見た目は通常のターミナルと変わりません。しかし、この中で実行するプロセスはSSH接続とは独立した仮想端末上で動いています。

4. Ctrl+a d でデタッチする(セッションから離脱)


デタッチ(detach)は、セッションを動かしたまま「画面から離れる」操作です。

# screen内でtopを実行中の状態 [root@web01 ~]# top # ここで Ctrl+a を押してから d を押す [detached from 23456.pts-0.web01] [root@web01 ~]#

「[detached from ...]」と表示されたら、元のSSH接続に戻っています。screen内で実行していたtopはバックグラウンドで動き続けています。

【重要】操作は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

SSH接続が切れた場合も同じ手順です。再度SSHでログインして 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

名前を付けないとPID番号でしか区別できません。「どのセッションで何の作業をしていたか」が分からなくなるので、必ず -S で名前を付けてください。

8. セッションを終了する


セッション内で exit を実行するか、Ctrl+d を入力するとセッションが完全に終了します。

# screen内で実行する [root@web01 ~]# exit [screen is terminating] [root@web01 ~]#

不要なセッションが残り続けると、PTY(擬似端末)やメモリを消費します。完了した作業のセッションは忘れずに終了してください。

応用・実務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が優れている部分が多くあります。

比較項目screentmux
画面分割垂直分割のみ(水平分割はパッチが必要)垂直・水平分割の両方に標準対応
ステータスバーなし(.screenrcで設定が必要)標準で画面下部に表示
プレフィックスキーCtrl+aCtrl+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 dscreen -r の流れだけ覚えてください。これだけで、夜間バッチやDBインポートの安全性が段違いに上がります。

関連コマンドも合わせて確認しておくと、プロセス管理の引き出しが増えます。

nohup・bg・disownでプロセスをバックグラウンドで実行する方法
topコマンドでCPU・メモリ使用率を確認する方法

SSH切断でプロセスが死んで、冷や汗をかいた経験はありませんか?

screenやnohupの使い方を覚えても、「本番でどう使い分けるか」は断片的な情報だけでは身につきません。現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。