Screenコマンドで効率的なLinuxターミナル管理を実現する方法

Screenコマンドで効率的なLinuxターミナル管理を実現する方法

Linux Screenは、システム内で複数の仮想シェルセッションを作成・管理できるターミナルマルチプレクサです。実行中のプロセスをバックグラウンドで保持し、サーバーから切断された後も継続的に動作させることができます。

GNU Screenとも呼ばれるこのツールは、仮想専用サーバー(VPS)をSSH経由で管理する際に特に威力を発揮し、複数のターミナルセッションを効率的に管理できるため、マルチタスク環境での作業や複数人での共同作業を円滑に進められるのが特徴です。

本記事では、Linux Screenのインストール方法から具体的な使用例まで詳しく解説します。また、HostingerのAIアシスタントKodeeと組み合わせてLinuxターミナルでの生産性を向上させる方法もご紹介します。

Linux Screenは、複数のターミナルセッションを作成・管理するコマンドラインユーティリティです。サーバーから切断された後もプロセスが実行され続ける仮想シェル環境を提供します。
仮想専用サーバー(VPS)ユーザーはScreenを活用することで、SSHセッションから一時的に離脱し、後から中断したポイントで作業を再開できます。DebianやRHEL系を含む、主要なLinuxディストリビューション全般で利用可能です。

Linux Screenコマンドのインストール方法

仮想専用サーバー(VPS)のセットアップが完了したら、PuTTYまたはターミナルを使ってSSH経由でリモートサーバーに接続しましょう。Hostingerをご利用の場合は、hPanelのブラウザターミナルを使用してWebブラウザから直接Linuxコマンドを実行できます。

SSHログイン認証情報を入力してサーバーに接続します。なお、hPanelをご利用の場合は、VPS overview(VPS概要メニュー)で認証情報を確認できます。接続後、以下のコマンドでシステムにGNU Screenがインストールされているかを確認しましょう。

screen --version

ターミナルがバージョン番号を返した場合、システムにはすでにScreenがインストールされているということです。表示されない場合は、以下のコマンドでUbuntu 22.04やその他のDebian系OSにScreenをインストールできます。

sudo apt update
sudo apt install screen

CentOSなどのRHEL系OSにScreenをインストールする場合は、dnfまたはyumを使用し、CentOS 8以降では、以下のdnfコマンドを実行してください。

sudo dnf update
sudo dnf install screen

代替方法として、リポジトリからScreenをインストールすることも可能です。Ubuntu 22.04での手順は以下のとおりです。

  • GCCとncursesライブラリをインストールするため、以下のコマンドを実行します。すでにインストール済みの場合はこの手順を飛ばしてください。
sudo apt -y install gcc
sudo apt -y install libncurses-dev
  • wgetコマンドを使ってリポジトリからScreenインストールファイルを取得します。
wget https://ftp.gnu.org/gnu/screen/screen-4.9.1.tar.gz
  •  tarコマンドを使ってファイルを展開します。
tar -xvf screen-4.9.1.tar.gz
  • cdを使って展開されたディレクトリに移動します。
cd screen-4.9.1
  • 以下のコマンドでインストールを実行します。
./configure
  • 次のコマンドでGNU Screenをビルド・コンパイルします。
make
  • 以下のコマンドでシステムにScreenをインストールします。
sudo make install
  •  Linux Screenのバージョンを確認して、インストールが成功したかを検証してください。

Linux Screenの活用事例

ここからは、Linux Screenの具体的な使用方法を順を追って説明していきます。基本操作を覚えることで、効率的なターミナル環境を構築できるようになるでしょう。

新しいScreenセッションの起動

セッションを開始するには、まずscreenコマンドを入力してスペースキーを押し、ウェルカムメッセージを閉じます。セッション名を指定しない場合、Screenは自動的にtty1.hostnameとして設定されます。

また、識別しやすくするため、-Sオプションを使ってセッションにカスタム名を付けることを推奨します。たとえば、以下のコマンドでsession1という名前の新しいセッションを開始できます。

screen -S session1

Screenを終了する場合は、exitコマンドを入力してください。ターミナルに終了メッセージが表示され、元のシェルに戻ります。

新しいターミナルウィンドウの作成

セッション内でCtrl-a + cを押すと、独立したシェル環境を持つ新しいScreenウィンドウが作成されます。独立したコマンドプロンプトにより、Linuxターミナルでのマルチタスクが効率化され、プロセス分離も向上します。

ターミナルインスタンスをさらに作成したい場合は、必要に応じてショートカットを繰り返してください。現在のウィンドウを閉じるには、exitコマンドを入力するか、Ctrl-a + kショートカットを押します。

重要!Linux Screenショートカットを使用する際は、Ctrl + aを離してから次のキーを押してください。コマンドは大文字と小文字を区別するため、正確に入力する必要があります。

ウィンドウ間の効率的な切り替え

セッション内の複数ウィンドウ間を移動するには、以下のキーボードショートカットを活用します。

  • Ctrl-a + n – 次のScreenウィンドウに移動
  • Ctrl-a + p – 前のウィンドウに移動
  • Ctrl-a + ID 番号 – 指定したScreenウィンドウに切り替え
  • Ctrl-a + 1 – 2番目のターミナルに切り替え(番号は0から開始)
  • Ctrl-a(2度押し) – 現在のウィンドウと前のウィンドウを素早く切り替え最後にアクセスしたターミナルウィンドウに直接移動できるため、作業効率が大幅に向上します。

すべてのアクティブウィンドウの表示と選択

複数のScreenウィンドウ間を個別に移動する代わりに、Ctrl-a + “を押してすべてのウィンドウを一覧表示できます。矢印キーでリストを操作し、Enterキーを押してハイライトされたウィンドウにアクセスしてください。

Linux Screenでは、ウィンドウ名を使った移動も可能です。Ctrl-a + ‘を押して名前を入力することで、目的のウィンドウに直接移動できます。

ウィンドウの名前を変更するには、該当するターミナルインスタンスに移動し、Ctrl-a + :を押してコマンドモードを有効にします。以下のコマンドを入力して名前を変更しましょう。

title "Screen Window Name"

Screenセッションからのデタッチ

Screenセッションからデタッチして元のターミナルシェルに戻りたい場合は、Ctrl-a + dショートカットを押します。セッション内のどのウィンドウからでも実行可能です。

デタッチされたセッションは、プロセスとウィンドウをバックグラウンドで実行し続け、セッション内でアプリケーションを実行している場合、サーバーから切断された後も継続的に動作します。

アクティブScreenセッションの一覧表示

すべてのアクティブセッションを確認するには、元のターミナルシェルで以下のコマンドを実行します。

screen -ls

実行中のすべてのScreenセッション、デタッチステータス、名前、プロセスIDが表示され、セッションに再接続する際に必要な情報が一目で確認できます。

デタッチされたScreenセッションへの再接続

実行中のScreenセッションに再接続するには、メインシステムターミナルで以下のコマンドを実行します。

screen -r ID-name

ID-nameを実際のScreenセッションIDまたは名前に置き換えてください。たとえば、1268.session1セッションに再接続する場合は、以下のどちらかのコマンドを使用できます。

screen -r 1268
screen -r session1

デタッチされたセッションへのコマンド送信

Linux Screenでは、再接続せずにデタッチされたセッションでコマンドを実行できます。その際は、以下の構文を使用してください。

screen -S session-name-or-id -X -p 0 command

次に0をターミナルウィンドウ番号に置き換えます。たとえば、hostingerセッションの最初のターミナルウィンドウでメッセージをエコーする場合は、以下のコマンドを実行します。

screen -S hostinger -X -p 0 echo "Test message"

コマンドが正常に実行された場合、仮想Screenセッションからの出力は生成されず、エラーが発生した場合のみ、エラーメッセージとbashスクリプトの出力が表示されます。

長時間実行プロセスの管理

Screenは長時間実行プロセスをバックグラウンドで保持し、現在のSSHセッションから切断された後も中断したポイントから続行できます。実行に時間がかかるbashスクリプトの実行に特に有効です。

新しいScreenセッションを作成し、仮想ターミナルでスクリプトを実行してからデタッチすることも可能ですが、stuffコマンドを使ってメインシェルから実行することもできます。

screen -S session -X -p 0 stuff "cd /script/directory/path; ./script.sh"$(printf \\r)

bashスクリプトに加えて、ホストされたアプリケーションをバックグラウンドでアクティブに保つことも可能です。たとえば、セッションを終了した後もLinux Minecraftサーバーにアクセス可能な状態を維持できます。

-fオプション付きのtailコマンドも実行でき、Screenが仮想セッションで新しいログエントリを出力するため、メインターミナルシェルで他のタスクを並行して実行できます。

仮想セッションでタスクを監視したい場合は、htopなどのプロセス監視ツールをインストールして有効化しましょう。その際は、以下のコマンドを順次実行します。

sudo apt install htop
screen -r session-name
htop

リモートコラボレーションとペアプログラミング

Linux Screenを使用すれば、複数のユーザーが共有ターミナルセッションを作成してコラボレーションとタスク管理を効率化できます。独立したセッション環境により、コマンドラインインターフェイスが整理され、コマンド履歴も簡単に確認できます。

既存の共有Linux Screenセッションに接続するには、SSH経由でサーバーにアクセスし、以下のコマンドで接続します。

ssh user@vps-ip -t "screen -r session-name"

SSHクライアントを使用する場合は、サーバーにログイン後、screenコマンドを個別に実行してください。Screenでのリモートコラボレーションを効率化するため、Ctrl-a + Sを押してウィンドウ内に複数の独立したターミナルインスタンスを作成できます。

ポイント

Linuxでセッション共有を有効にすると、複数のユーザーがサーバーでコマンドを実行できるようになります。VPSのセキュリティを向上させるため、セッション内でCtrl-a + :passwordを入力してScreenパスワードを有効化することを推奨します。 

複数タスクの同時実行

複数のScreenセッションとウィンドウを作成し、それぞれで独立したプロセスを実行できます。マルチタスクが効率化され、プロセス分離とリソース効率も向上します。

各タスクが独立して動作するため、他のプロセスに影響を与えることなく、応答しないタスクを終了できるだけでなく、プロセスを無効化することで、別のハードウェア集約的タスクを実行するためにサーバーリソースを再配分することも可能です。

独立したターミナルでタスクを実行することで、ログデータが簡素化され、トラブルシューティングとデバッグが容易になるわけです。ログ付きScreenセッションを作成するには、以下のコマンドを使用してください。

screen -L -S session-name

効果的なLinux Screen活用のためのポイント

ここからは、仮想専用サーバー(VPS)管理でScreenを効率的に使用するためのベストプラクティスについて説明します。

.screenrcファイルによる設定カスタマイズ

Linux Screenの動作をカスタマイズするには、~/.screenrcファイルでユーザー設定を編集します。Screenはデフォルトでこのファイルを提供しないため、以下のコマンドを入力して作成しましょう。

cd ~; nano .screenrc

テキストエディターでScreen設定を記述し、Ctrl-x + yを押して変更を保存します。カスタマイズ可能な主な設定項目は以下の通りです。

  • Escape – Screenにコマンドを送信するショートカットを変更(デフォルトはCtrl-a
  • Startup program –Screen開始時に自動実行するコマンドまたはスクリプトを設定
  • Keybindings – Screenコマンドとアクションのキーボード組み合わせを変更
  • Number – ターミナルウィンドウの番号設定を変更。オフに設定するか、別の番号でウィンドウを開始可能
  • Startup message – Screenセッション開始後に表示されるウェルカムメッセージの有効/無効化

ポイント

.screenrcファイルは隠しファイルのため、ディレクトリでls -aコマンドを使用して正常に作成されたかを確認してください。 

たとえば、以下の設定を追加してウェルカムメッセージを無効化し、デフォルトのCtrl-aプレフィックスキーを変更できます。

#Disable the welcome message
startup_message off
#Change prefix to alt-tab
escape ^Ii

分かりやすいウィンドウタイトルによるセッション管理

複数のScreenセッションが実行されている場合、特に同じ名前を共有しているとナビゲーションが複雑になります。作業を効率化するため、実行中のプロセスやスクリプトなど、説明的な名前を付けることを強く推奨します。

-Sオプションを使ってカスタム名で新しいセッションを開始するだけでなく、Screenでは既存のセッション名も変更可能です。該当するセッションに接続し、Ctrl-a + :ショートカットを押して、新しい名前を入力してください。

Screenセッションに複数のウィンドウがある場合は、-tオプションを使ってデフォルト名を設定できます。コマンド構文は以下の通りです。

screen -S Session-name -t Window-title

メインターミナルでコマンドを実行すると、Session-nameという新しいセッションが作成されます。セッション内で新しいウィンドウを作成すると、名前がデフォルトでWindow-titleに設定されます。

分割画面機能を活用したマルチタスク環境

GNU Screenでは、ターミナルウィンドウを独立したシェルを持つ個別の領域に分割できます。すべてのターミナルを同時に表示しながら異なるターミナル間を移動できるため、マルチタスクが格段に容易になります。

Ctrl-a + Sを押してウィンドウを水平に分割し、Ctrl-a + |を押して垂直に分離します。同じコマンドを使用して、新しい領域をさらに分離し、より小さなターミナルウィンドウを作成することも可能です。

デフォルトでは、新しい領域は使用できない空白のウィンドウとして表示されます。有効化するには、Ctrl-a + Tabを使って新しい領域に移動し、Ctrl-a + cを押して新しいウィンドウを作成してください。すべての領域でこのプロセスを繰り返しましょう。

コマンドモードで入力フォーカスを変更してナビゲートすることも可能です。たとえば、Ctrl-a + :focus rightを入力すると、現在のウィンドウの右側の領域に切り替わります。

.screenrcファイルを編集して、ターミナルウィンドウナビゲーションコマンドを再バインドすることもできます。たとえば、以下の設定でCtrl-a + ナビゲーション矢印を押して領域を切り替えられるようになります。

#Rebind the split-window navigation shortcuts
bind ^[[A focus up
bind ^[[A focus up
bind ^[[B focus down
bind ^[[C focus left
bind ^[[D focus right

重要なキーボードショートカット一覧

Linux Screenのキーボードショートカットを理解しておくことは、ツールの効率的な使用とナビゲーションに欠かせません。重要なキーの組み合わせは以下の通りです。

  • Ctrl-a + c – 新しいウィンドウを作成
  • Ctrl-a + p n –前のウィンドウと次のウィンドウに移動
  • Ctrl-a + w – ターミナルウィンドウリストを表示
  • Ctrl-a + A – 現在のウィンドウの名前を変更
  • Ctrl-a + : – コマンドモードに入る
  • Ctrl-a + x – 現在のウィンドウを閉じる
  • Ctrl-a + a – 最初のCtrl-aショートカットをキャンセル

包括的なコマンドとショートカットリストについては、GNU Screenマニュアルを参照してください。キーの組み合わせを覚えやすくするため、.screenrcファイルを編集して好みに基づいてデフォルトキーバインドを変更することを推奨します。

KodeeでLinux Screen操作をサポート

Hostingerの仮想専用サーバー(VPS)AI統合により、Linux Screenでのサーバー管理作業が大幅に効率化されました。AIアシスタントのKodeeを活用すれば、簡単なプロンプトを入力するだけで、Screen関連のコマンド、スクリプト、サーバーセットアップに最適化されたステップバイステップの手順を自動生成できます。

KodeeはHostingerのすべてのVPSプランで利用可能です。アクセスした場合は、hPanelにログインしてトップメニューのVPSをクリックしてください。リストからサーバーを選択し、サイドバーからKodeeをクリックします。

重要!AIの制限により、古い情報や不正確な情報が提供される可能性があります。出力内容が正確であることを確認するため、常に検証を行ってください。

フィールドにプロンプトや質問を入力してSend(送信)を押すだけで、具体的な回答が得られる仕組みです。システムにGNU Screenをインストールして使用する方法について、以下のような質問をしてみましょう。

  • Ubuntu 22.04の仮想専用サーバー(VPS)を使用しています。 Linux Screenをインストールする手順を教えてください
  • システムにLinux Screenをインストールしました。基本的な使用方法を説明してください
  • 新しいLinux Screenセッションを開始するコマンドを教えてください
  • メインターミナルからデタッチされたセッションでbashスクリプトを実行するコマンドを生成してください
  • Linux Screenのキーバインドを変更したいです。.screenrcファイルの設定を生成してください

AIアシスタントが正確な結果を生成できるよう、仮想専用サーバー(VPS)管理のAIプロンプトは明確で具体的に記述してください。Linuxコマンドはディストリビューションによって異なるため、仮想専用サーバー(VPS)オペレーティングシステムを明示することが重要です。

まとめ

Linux Screenは、システム内で複数の仮想ターミナルセッションを作成・管理できる強力なマルチプレクサツールです。サーバーから切断された場合でも、セッション内のプロセスをバックグラウンドで継続実行できるため、安定した作業環境を実現できます。

システムへのインストールは、aptyumdnfなどのパッケージマネージャーを使用するか、wgetコマンドで公式リポジトリからダウンロードして行い、インストール完了後、screenコマンドを実行して新しいセッションを開始できます。

セッション内では、Ctrl-a + cで新しいScreenウィンドウを作成し、Ctrl-a +aでウィンドウ間を切り替えます。Ctrl-a + dショートカットでターミナルセッションからデタッチし、screen -rコマンドで再接続可能です。

-Xオプションを使用すると、デタッチされたセッションでリモートコマンドを実行できます。長時間実行されるスクリプトなどで特に有効な機能です。また、分割画面ターミナル機能により、マルチタスクとコラボレーション作業も効率化されます。

HostingerのVPSプランをご利用の場合は、AIアシスタントKodeeに具体的なプロンプトを入力することで、Screenの操作サポートを受けることができるでしょう。

Author
著者

Yūto Ōmura

イギリスから日本へ帰国後、翻訳者として8年従事。英国の大学ではメディア・映像を専攻し、以来、日英両言語にて10年以上複数のウェブサイトおよび動画メディアを運営。プライベートでは、料理をしたり、家族で小旅行に行ったりするのが好きです!