LinuxC入門|screenを利用した仮想端末の管理

Linux を使って作業していると、「長時間かかる処理を実行したままログアウトしたい」「SSH 接続が切れても処理を止めたくない」という場面に出会うことがあります。
そんなときにとても便利なのが、screen を利用した仮想端末の管理です。

screen は、1 つのログイン環境の中に 複数の仮想端末(スクリーン) を作成し、それぞれで処理を実行できるコマンドです。
作成したスクリーンは、ログアウトしても終了しないため、処理を裏で動かし続けることができます。

このページでは、screen の基本的な考え方から、実際の操作手順までを、表や具体例を交えながらやさしく解説していきます。

まずは、screen がどんなことをしてくれるコマンドなのかを整理してみましょう。

screen でできること

機能内容
仮想端末の作成1 つのログインで複数の端末を扱える。
処理の継続ログアウト後も処理を継続できる。
再接続後から同じ作業画面に戻れる。
セッション管理実行中の画面を一覧で確認できる。

screen を使うと、「別の作業スペースを裏で動かしておく」というイメージがしやすくなります。

screen を使う前に、まずはインストールを行います。
AlmaLinux 9.7 では、EPEL リポジトリを有効にしてから screen をインストールします。

screen のインストール

[suzuki@AlmaLinux ~]$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
[sudo] suzuki のパスワード:

続いて screen をインストールします。

[suzuki@AlmaLinux ~]$ sudo dnf install screen -y

インストールが完了すれば、すぐに screen を利用できるようになります。

ここからは、screen の動きを確認するために、簡単なスクリプトを用意します。
このスクリプトは、60 秒待ってからメッセージを表示するだけのものです。

スクリプトの準備

まず、作業用のディレクトリを作成します。

[suzuki@AlmaLinux ~]$ mkdir bin

次に、スクリプトを作成します。

[suzuki@AlmaLinux ~]$ nano bin/sleep.sh

スクリプトの内容は次のとおりです。

#!/bin/bash

sleep 60
echo "wake up!"

保存したら、実行権限を付与します。

[suzuki@AlmaLinux ~]$ chmod a+x bin/sleep.sh

このスクリプトは、実行すると 60 秒間シェルを占有し、その後 wake up! という文字列を表示します。

では、実際に screen を使ってみましょう。

screen の起動

[suzuki@AlmaLinux ~]$ screen

このコマンドを実行すると、新しいスクリーン(仮想端末) が起動します。
見た目は普段のターミナルとほとんど同じですが、実は別の画面として動いています。

スクリーンの中で、先ほど作成したスクリプトを実行してみます。

[suzuki@AlmaLinux ~]$ bin/sleep.sh &
[1] 3557

バックグラウンドでスクリプトが実行されていることを確認するため、プロセスを見てみましょう。

[suzuki@AlmaLinux ~]$ ps ax | grep sleep
   3557 pts/1    S      0:00 /bin/bash /home/suzuki/bin/sleep.sh
   3558 pts/1    S      0:00 sleep 120
   3560 pts/1    S+     0:00 grep --color=auto sleep

この結果から、sleep.sh が screen の中で動いていることが分かります。

次に、現在稼働しているスクリーンを確認します。

screen -ls コマンド

screen -ls は、稼働中のスクリーン一覧を表示するコマンドです。

コマンド書式

screen -ls

使用例

[suzuki@AlmaLinux ~]$ screen -ls
There is a screen on:
        3529.pts-0.AlmaLinux    (Attached)
1 Socket in /run/screen/S-suzuki.

この表示から、PID 3529 のスクリーンが稼働していることが分かります。

スクリーンに再接続するには、screen -r を使います。

screen -r コマンド

コマンド書式

screen -r PID

使用例

[suzuki@AlmaLinux ~]$ screen -r 3529

しばらく待つと、スクリプトが終了し、次のような表示が出ます。

wake up!
[1]+  終了                  sleep.sh

スクリーンを終了する場合は、Ctrl + a を押した後に \ を押します

Really quit and kill all your windows [y/n] y

終了後、スクリーンが残っていないことを確認します。

[suzuki@AlmaLinux ~]$ screen -ls
No Sockets found in /run/screen/S-suzuki.

ここで、screen コマンドの基本を整理しておきましょう。

screen コマンドの概要

項目内容
書式screen [オプション]
概要スクリーンによる仮想端末の管理

主なオプション

オプション説明
-r PID指定したスクリーンに再接続
-ls稼働中のスクリーンを一覧表示

主な操作

操作説明
Ctrl + a, dスクリーンのデタッチ
exitスクリーンの終了

screen と似たコマンドとして tmux もあります。
tmux でも、screen と同じようにセッションを分離し、ログアウト後も処理を継続できます。

screen を使いこなせるようになると、リモート作業や長時間処理がとても楽になります。
「処理を止めずに一度離れる」という選択肢を持てるようになるのは、Linux 管理者にとって大きな強みです。

まずは基本操作を覚えて、実際の環境で少しずつ試してみてくださいね。