【Linux】時間のかかる処理は仮想端末が使えるscreenコマンドを活用しよう

時間のかかる処理を放置して戻るとsshセッションが切れて処理が中断されていた経験をお持ちの方は多いと思います。

ターミナルのセッションが切れないようにルータのNATタイマーの時間を調整するとか、キープアライブパケットを送るという方法もありますが確実ではありません。

何らかの理由で回線が切断しても安心な仮想端末のscreenコマンドを活用しましょう。

screenコマンドの基本的な使い方

仮想端末の新規作成

screenコマンドに何もオプションを付けないで実行すると新しく仮想端末を作成して、その作成した仮想端末に入ります。

$ screen

仮想端末を維持したまま抜ける(デタッチ)

仮想端末にいる状態でCtrl+A, Ctrl+Dの順に押すとメッセージが表示され仮想端末を維持したまま抜けることができます。

[detached from 4638.pts-0.xxxxxxxxxx]
$

現在ある仮想端末を確認する(一覧)

screenコマンドに-lsオプションを付けて実行すると仮想端末一覧を表示することができます。

$ screen -ls
There are screens on:
        5036.pts-0.xxxxxxxxxx   (07/04/19 12:22:29)     (Attached)
        5031.pts-0.xxxxxxxxxx   (07/04/19 12:22:24)     (Attached)
        5018.pts-0.xxxxxxxxxx   (07/04/19 12:21:55)     (Detached)
3 Sockets in /var/run/screen/S-xxxxxx.

$

仮想端末に入る(アタッチ)

screenコマンドに-rオプションを付けて実行します。

仮想端末が複数存在する時は-rの後にPIDを指定します。

# 仮想端末が1つのときPIDは省略可能
$ screen -r

# 仮想端末が複数あるときはPIDを指定
$ screen -r 5018

-rxオプションを使えば、既に他でアタッチされている仮想端末を強制的に自分にアタッチすることも可能です。

$ screen -rx 5018

仮想端末を閉じる

仮想端末に入った状態で通常の端末と同じようにexitかCtrl+Dで抜けると仮想端末を閉じることができます。

[screen is terminating]
$

その他

その他のオプションや詳しい説明はman screenコマンドで確認できますので、興味のある方は自分で調べてみて下さい。

まとめ

screenコマンドを使えば仮想端末内でツールを動かしっぱなしにしても、ターミナルソフトを起動したままにしたり、PCを起動したままにする必要はありません。

個人的には時間のかかるコンパイル作業やログ確認のtailを動かしっぱなしにするときなどscreenコマンドの応用範囲は広いです。

ぜひとも便利なscreenコマンドを活用して端末作業をより快適に使っていきましょう。