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

screen
コマンドは、複数のスクリプトをバックグラウンドで同時に実行する際に非常に便利です。これにより、それぞれのタスクに対してターミナルを開いたままにすることなく、長時間実行されるタスクを開始することができます。以下では、screen
を使用してスクリプトをバックグラウンドで実行し、これらのセッションを管理する方法を説明します。
~/project
には、異なるタスクを実行する 3 つのスクリプトがあります。
環境内のターミナル(図の ① または ②)を開き、以下のコマンドを入力します。
ls ~/project
これら 3 つのスクリプトを同時に実行したい場合は、次のようにします。
ここでは、screen
を使用して、これらのスクリプトをデタッチされたセッションで同時に実行します。
screen
を使ってこれらのスクリプトをバックグラウンドで実行するには、-dmS
オプションを使用します。
-d
はセッションを開始し、すぐにデタッチします。-m
は screen
に新しいセッションを作成するよう強制します。-S
はセッションに名前を付けて、簡単に参照できるようにします。1 つのターミナルを開き、スクリプトが格納されているディレクトリに移動します。そして、以下のコマンドを使用して、それぞれのスクリプトを別々の screen
セッションで起動します。
screen -dmS task1./script1.sh
screen -dmS task2./script2.sh
screen -dmS task3./script3.sh
スクリプトを起動した後、さまざまなコマンドを使用してこれらの screen
セッションを管理することができます。
screen -ls
このコマンドは、実行中のすべての screen
セッションを表示します。
screen -r session_name
特定のスクリプトの出力を確認したり、そのスクリプトと対話したい場合は、このコマンドを使用してそのセッションに再接続します。session_name
を、スクリプトを起動する際に指定した名前(例: task1
、task2
、または task3
)に置き換えます。
セッションの確認が終了したら、Ctrl-a
を押してから d
を押すことで、セッションからデタッチし、バックグラウンドで実行を続けさせることができます。
セッションを終了するには、screen -r session_name
を使用してセッションに再接続し、exit
と入力するか、Ctrl-d
を押します。
screen
を使用して複数のバックグラウンドタスクを管理することで、特に長時間実行されるプロセスやバックグラウンドプロセスを扱う際に、作業フローを大幅に効率化することができます。デタッチされた screen
セッションでスクリプトを実行することで、作業スペースをきれいに保ち、サーバーから切断したりターミナルを閉じたりしても、プロセスが中断されることなく続行されることを保証します。
screen
を試してみて、どのように作業フローに最適に適合し、生産性を向上させることができるかを見つけてみましょう!