カテゴリー
アーカイブ

06.10
2023

[Linux] screen コマンド

  • LINE

本日はLinuxの便利な screen コマンドについて書いていきたいと思います!

開発環境のLinuxサーバにSSH接続をして作業する際に、時間がかかる処理を走らせるこがたまにあります。
処理が終わるまでログアウトできなかったり、SSH接続が途絶えて処理が中断されてしまうなど、何かと心配することがあったりしますよね。
screenコマンドは、そんな悲しいことが起こらないようにしてくれる素敵なコマンドです。

使い方

screenコマンドで新しいセッションを開始します。

$ screen

セッションの一覧を表示

$ screen -ls
セッションの一覧を表示すると、今作成したセッションに Attached (セッションに接続されている状態)になっていることが確認できます。
$ screen -ls
There is a screen on:
        1591.pts-0.vagrant      (2022年04月23日 05時02分04秒)   (Attached)
1 Socket in /run/screen/S-vagrant.
数字の1591は接続IDでアタッチするときに使います。

この状態で、試しにPythonで無限ループさせてみます。
$ python3
Python 3.8.10 (default, Nov 26 2021, 20:14:08)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> cnt = 0
>>> while True:
...     print(cnt)
...     cnt+=1
...
0
1
2
3
4
5
6
7
...
..
.
Pythonで無限ループさせたまま、セッションから一時離脱(Detached)します。
[Ctrl] + a + d
キーボードから↑を押すと、セッションが終了してscreenコマンド実行前のターミナル画面に戻ります。
[detached from 1591.pts-0.vagrant]
$
こうなったらターミナルを閉じても大丈夫です!

一度ターミナルを閉じて、再接続してみます。
セッションの一覧を表示して、現在の状態を確認してみると、
$ screen -ls
There is a screen on:
    1591.pts-0.vagrant  (2022年04月23日 05時02分05秒) (Detached)
1 Socket in /run/screen/S-vagrant.
先ほど Attached になっていたセッションが Detachedになっています。

再度そのID:1591のセッションにアタッチ(セッションに接続)します。
$ screen -r 1591
そうすると先ほどの無限ループの処理が実行されていることを確認できます!
...
18456215
18456216
18456217
18456218
18456219
18456220
18456221
18456222
18456223
18456224
18456225
18456226
18456227
18456228
18456229
18456230
18456231
18456232
...
..
.

セッションを終了させる

実行させていた処理が終わってscreenのセッションを終了させたい場合は↓
[Ctrl] + d
セッションが終了すると、[screen is terminating] と表示されます。

$ screen -la
セッション一覧に何も表示されず、ID 1591 のセッションが削除されたことを確認できます。

以上、screenの使い方についてのご紹介でした!
処理に時間がかかることがわかっているコマンドは screenのセッション内で実行すると安心ですね!