
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 管理者にとって大きな強みです。
まずは基本操作を覚えて、実際の環境で少しずつ試してみてくださいね。
