meideru blog

家電メーカーで働いているmeideruのブログです。主に技術系・ガジェット系の話を書いています。

【Linux】screen の使い方

 

今日は、screen というアプリケーションの使い方を説明しようと思います(^o^)

screen は使い方がわかると、とても便利です。

screenとは?

screen とは、1つの端末内に複数の端末を仮想的に起動することのできるアプリケーションです。1つの端末で複数のウィンドウを作成できるのでscreenと呼ばれています。

また、ユーザがログアウトしても、閉じていなければ仮想的な端末(ウィンドウ)は維持されます。消えないのです。つまり、次回ログインしたときにも、先の仮想的な端末(ウィンドウ)にもアクセスすることができます。

具体的な使い方としては、バックグラウンドでアプリケーションを動作させたいときなどに使用します。

アプリケーションを起動 → アプリケーションをバックグラウンドで動作させる → ユーザのログアウト → 再びログイン → アプリケーションの状況を確認

といったことができます。

目次

bgとfgコマンドではダメなのか?

シェル(bash)の標準コマンドに、fgとbgといったコマンドがあります。

bg は、アプリケーションをバックグラウンドで動作させるためのコマンドです。fg は、バックグラウンドで動作しているアプリケーションを操作できるようにするコマンドです。(詳しくはググってみてください)

一見すると、これがあればscreenは必要ないと思われるかもしれませんが、このコマンドには大きな問題があります。

bgとfgは、アプリケーションによっては動作しないことがあるのです。

なので、バックグラウンドでアプリケーションを動作させたいときは、screen を使用するのが一般的です。

screenのインストール方法

RedHat系とDebean系の両方の場合を書いておきます。

RedHat系の場合
[meideru@localhost ~]$ sudo yum -y install screen

Debian系の場合
[meideru@localhost ~]$ sudo apt-get install screen

screenの使い方

起動方法

screen と入力するだけでおkです。

[meideru@localhost ~]$ screen

コマンドの実行方法

基本的には、Ctrl + A を押した後に、コマンドを入力することで実行することができます。

例えば、新しいウィンドウの生成はCなので、Ctrl + A を押した後にCを押すと新しいウィンドウが作成されます。

以下では、「Ctrl + A C」という風に略します。

基本的なコマンド

ウィンドウの作成

Ctrl + A C

このコマンドを入力すると、新しいウィンドウを作成できます。

ウィンドウを完全に閉じる

現在のウィンドウを削除するにはexit を使用します。
[meideru@localhost ~]$ exit

exit はログアウトするコマンドでしたね。このコマンドでウィンドウを完全に閉じることができます。このコマンドを打ち込むと、この画面にはもう復帰はできません。

PID番号で削除する方法もあります。

kill [PID番号] を使用します。(PID番号については下で説明しています)

[meideru@localhost ~]$ kill 2545

ウィンドウのPID番号を表示

screen -ls

[meideru@localhost ~]$ screen -ls
There are screens on:
        3114.pts-0.meideru-server      (Detached)
        3094.pts-0.meideru-server      (Detached)
2 Sockets in /var/run/screen/S-meideru.

PID番号とは、ウィンドウに紐付けられている番号のことです。例えば、特定のウィンドウを削除したり、復帰したりするときにこの番号を使用します。

シェルを見ると2つのウィンドウが起動していることがわかります。3114と3094というPID番号のウィンドウです。

ウィンドウをデタッチ

Ctrl + A D

デタッチとは、ウィンドウをバックグランドで動作させて、元のウィンドウに戻ることです。

ウィンドウをアタッチ

screen -r [PID番号]

[meideru@localhost ~]$ screen -ls
There are screens on:
        3114.pts-0.meideru      (Detached)
        3094.pts-0.meideru      (Detached)
2 Sockets in /var/run/screen/S-meideru.

[meideru@localhost ~]$ screen -r 3114

アタッチとは、元のウィンドウに復帰することです。

上の例では、3114というウィンドウに復帰しようとしています。

 

以上です!

ノシ

 - 技術系