【Linux】時間がかかる処理を裏で動かすscreenコマンド

Linux,Mac

こんにちは、しきゆらです。
今回は、screenコマンドを知ったのでメモしておきます。

Linux等を触っていると、時々時間がかかる処理を走らせることがありますよね。
私の場合は、aptやyum、dnf等のパッケージマネージャでのアップデート関係やrbenvなどで環境を整えるときなどです。
このようなコマンドをSSH越しに実行しているときに、途中で接続が切れると悲しいことになりますよね。

そんなことが起きても大丈夫なようにしてくれる魔法のコマンドが「screen」コマンドです。
できることはいくつかあるようですが、よく使うのがセッションの管理でしょう。
今回は、簡単に使い方をまとめておきます。

 


 

簡単なイメージ

誤解や実際とは異なるかもしれませんが、簡単にscreenコマンドのイメージをメモしておきます。

screenコマンドは、その名前の通り仮想的にスクリーン(ターミナル)を作成し、それを切り替えることができるようなコマンドです。
メインターミナルからscreenコマンドから仮想ターミナルを作成し、仮想ターミナルを通してコマンドを実行していきます。

簡単な図を作成してみました。
左側が仮想ターミナルを使ったイメージ、右側がターミナルから直接操作しているイメージです。

重たい処理や時間がかかる処理を行う場合は、仮想ターミナルから実行して仮想ターミナルからメインターミナルに戻ることでほかの作業を進めることができます。
またSSH等で接続している場合は、接続が切れるとログアウト状態になるのか作業がその時点で止まってしまいます。
途中の場合は、未完了でもう一度作業を行わなければいけません。

仮想ターミナルから作業を行う場合は、仮想ターミナルが常に開いている状態になるのでメインのターミナルが落ちたとしても仮想ターミナルに接続しなおせば途中から作業を再開することができるわけですね。
SSHが切れたとしても、再接続して仮想ターミナルに再度接続することで作業を継続することができるわけです。

なお、SSHをした先でscreenコマンドを実行しないと恩恵はないかと思います。
あくまでセッションを管理しているだけなので、仮想ターミナルのSSH接続が切れてしまうと結局意味ないので、
SSHで接続した先でscreenコマンドを実行しましょう。

 

使い方

新しいセッションの作成

使い方は、「screen」とコマンドで打つだけ。
これだけで新しいセッションを作成してくれます。

[bash]
screen
[/bash]

これで、仮想ターミナルを作成して接続してくれます。
この中での作業は、途中で接続が切れたとしても裏で動き続けてくれます。

セッションの中断

仮想ターミナルからメインターミナルに戻るには、「C-a C-d」で戻れます。
C-aはEmacsと同じようにCtrlを押しながらaを押します。

セッションの再開

作成したセッションは
[bash]screen -ls[/bash]
で一覧を見ることができます。

それぞれのセッションには、IDが割り振られています。
screen -lsを実行するとIDが表示されるので、
[bash]screen -r <ID>[/bash]
で再開することができます。

なお、セッションが1つしかない場合はIDを省略して
[bash]screen -r[/bash]
だけで再開することができます。

 

まとめ

今回は、screenコマンドを知ったので簡単な使い方をメモしました。
使い慣れないコマンドですが、かなり便利なので今後使っていこうと思います。

なお、screenコマンドはもっとできることがあります。
詳しいことは、以下のリンクから見ていただければと思います。

 

今回はここまで。
おわり。

Posted by しきゆら