Screen で複数のターミナルを管理する

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

screen コマンドは、複数のスクリプトをバックグラウンドで同時に実行する際に非常に便利です。これにより、それぞれのタスクに対してターミナルを開いたままにすることなく、長時間実行されるタスクを開始することができます。以下では、screen を使用してスクリプトをバックグラウンドで実行し、これらのセッションを管理する方法を説明します。

screen コマンドの使用例

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux/ProcessManagementandControlGroup -.-> linux/jobs("Job Managing") linux/ProcessManagementandControlGroup -.-> linux/bg_process("Background Management") subgraph Lab Skills linux/jobs -.-> lab-271827{{"Screen で複数のターミナルを管理する"}} linux/bg_process -.-> lab-271827{{"Screen で複数のターミナルを管理する"}} end

スクリプトをバックグラウンドで実行する

~/project には、異なるタスクを実行する 3 つのスクリプトがあります。

環境内のターミナル(図の ① または ②)を開き、以下のコマンドを入力します。

ls ~/project
ターミナルでのプロジェクトファイルの一覧表示

これら 3 つのスクリプトを同時に実行したい場合は、次のようにします。

3 つのスクリプトを同時に実行する

ここでは、screen を使用して、これらのスクリプトをデタッチされたセッションで同時に実行します。

screen を使ってこれらのスクリプトをバックグラウンドで実行するには、-dmS オプションを使用します。

  • -d はセッションを開始し、すぐにデタッチします。
  • -mscreen に新しいセッションを作成するよう強制します。
  • -S はセッションに名前を付けて、簡単に参照できるようにします。

スクリプトの起動

1 つのターミナルを開き、スクリプトが格納されているディレクトリに移動します。そして、以下のコマンドを使用して、それぞれのスクリプトを別々の screen セッションで起動します。

screen -dmS task1./script1.sh
screen -dmS task2./script2.sh
screen -dmS task3./script3.sh

セッションの管理

スクリプトを起動した後、さまざまなコマンドを使用してこれらの screen セッションを管理することができます。

すべてのセッションを一覧表示する

screen -ls
screen セッションの一覧出力

このコマンドは、実行中のすべての screen セッションを表示します。

セッションに再接続する

screen -r session_name

特定のスクリプトの出力を確認したり、そのスクリプトと対話したい場合は、このコマンドを使用してそのセッションに再接続します。session_name を、スクリプトを起動する際に指定した名前(例: task1task2、または task3)に置き換えます。

セッションからデタッチする

セッションの確認が終了したら、Ctrl-a を押してから d を押すことで、セッションからデタッチし、バックグラウンドで実行を続けさせることができます。

セッションを終了する

セッションを終了するには、screen -r session_name を使用してセッションに再接続し、exit と入力するか、Ctrl-d を押します。

まとめ

screen を使用して複数のバックグラウンドタスクを管理することで、特に長時間実行されるプロセスやバックグラウンドプロセスを扱う際に、作業フローを大幅に効率化することができます。デタッチされた screen セッションでスクリプトを実行することで、作業スペースをきれいに保ち、サーバーから切断したりターミナルを閉じたりしても、プロセスが中断されることなく続行されることを保証します。

screen を試してみて、どのように作業フローに最適に適合し、生産性を向上させることができるかを見つけてみましょう!