Linux, コマンド · 1 min read · Sep 15, 2025

Linux screen コマンド: 接続が切れてもプロセスを実行し続ける

皆さんもご存知だと思いますが、SSHでサーバーに接続していて、ソフトウェア(例えば新しいカーネル)をコンパイル中や、時間のかかる他の作業をしている最中に、突然接続が切れてしまい、未完了の作業を失ってしまうことがあります。これは非常に煩わしいことですが、幸いにも、screenという小さなユーティリティがあり、以前のセッションに再接続して作業を続けることができます。この短いチュートリアルでは、screenをこの目的で使用する方法を示します。

1 screen コマンドのインストール

screenのインストールは非常に簡単です。Debianでは、次のコマンドを実行します:

apt-get install screen

Ubuntuの場合は、sudoを使ってコマンドを実行します:

sudo apt-get install screen

Fedora、CentOS、SuSE、Mandrivaでも、yum / yast / urpmi /…を使ってインストールできるscreenパッケージがあります。

FedoraとCentOSでは

yum install screen

2 screen コマンドの使用

screenを使用すると、現在のSSHターミナルで1つ以上のセッションを作成できます。次のコマンドを実行して開始します:

screen

これにより、現在のSSHターミナルにscreenセッションまたはウィンドウが作成されます(ただし、そのようには見えません):

Linux screen コマンドが開始された

スペースまたはリターンを押してコマンドプロンプトに移動します:

Linux screen コマンドプロンプト

普通のSSHターミナルのように見えますね?

ここでは、screenを制御するために必要な最も重要なscreenコマンドを説明します。これらのコマンドは、通常のシェルコマンドと区別するためにCTRL aで始まります。

  • Ctrl a c - 新しいscreenセッションを作成し、同時に複数のscreenセッションを使用できるようにします。
  • Ctrl a n - n 番目のscreenセッションに切り替えます(複数使用している場合)。
  • Ctrl a p - p 番目のscreenセッションに切り替えます(複数使用している場合)。
  • Ctrl a d - screenセッションをデタッチします(プロセスを終了させずに - 続行します)。

すべてのタスクが完了したscreenセッションを閉じるには、次のように入力します:

exit

さて、少し遊んでみましょう。screenウィンドウで、次のコマンドを実行します:

top

これは次のように見えるはずです:

screenコマンド内で実行されているtopコマンド

次に、次のように入力して別のscreenセッションを作成します:

Ctrl a c

新しい空のscreenセッションが開き、そこで次のコマンドを実行します:

tail -f /var/log/mail.log

これにより、メールログを継続的に確認できます:

screenコマンドで表示されるmail.log

次に、次のコマンドを実行して2つのscreenセッションをブラウズできます:

Ctrl a n

または

Ctrl a p

screenセッションをデタッチして通常のSSHターミナルに戻るには、次のように入力します:

Ctrl a d

通常のSSHターミナルに戻ったら、次のコマンドを実行して現在のscreenセッションのリストを取得します:

screen -ls
There are screens on:  
        2477.pts-0.server1      (Detached)  
        2522.pts-0.server1      (Detached)  
2 Sockets in /var/run/screen/S-root.

これらのセッションの1つに再接続するには、次のように実行します:

screen -r 2477.pts-0.server1

ここで、2477.pts-0.server1はscreen -lsの出力からのセッションの名前です。

screenセッションを終了して終了するには、すべての現在のタスクを完了させ(topはqを入力して終了できます、tail -f /var/log/mail.logはCTRL cを入力して終了できます)、次のように入力します:

exit

これにより、別のscreenセッションに戻るか(複数使用している場合)、オープンなscreenセッションがない場合は通常のSSHターミナルに戻ります。

screenについてもっと学びたい場合は、次のコマンドを実行します:

man screen

3 接続が切れた - どうすればいい?

では、screenセッションでカーネルをコンパイルしていると仮定しましょう。これは通常長い時間がかかりますが、突然接続が切れてしまいました。screenのおかげで、作業は失われません。接続が復旧したら、再度SSHでシステムにログインし、次のように実行します:

screen -ls

第2章に示したように。結果から1つのセッション(例えば2477.pts-0.server1)を選択し、再接続します:

screen -r 2477.pts-0.server1

正しいセッションを選択していれば、カーネルがまだコンパイル中であることがわかるはずです(その間に終了していなければ)ので、作業を続けることができます。

4 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。