linux

【Linux】sshが切断しても処理を継続させる方法【結論:screenを使う】

How to continue way of ssh connection on Linux
プログラム女子
プログラム女子

ターミナルで作業をしてた時、突然、SSH接続が切れてしまって作業が台無しになったのですが、途中で接続が切れても作業を継続する方法ってありますか?

作業前に、「screen」というコマンドを使えば解決すると思うから、それを説明するね。

Tommy
Tommy

Linuxのsshが切断しても処理を継続させる方法の概要

summary of continue way of ssh connection

この記事では、sshでのターミナル作業中、ネットワークが切れた場合に、実施していた作業を継続させる方法を説明します。

昨今、レンタルサーバーの多くは、Linuxサーバーですが、もしこれを読んでくれているあなたが、ブログ運営などでレンタルサーバーを借りている場合、Linuxの仕組み仕組みを知ると、エンジニアとしての一歩を踏み出せるかもしれません。

Linuxの仕組みを知る上で、下記linux初心者向けの記事が参考になります。こちらも合わせて読んでください。

【linux】ファイル操作とディレクトリ構成【→初心者向け】

ところで、皆さんは、ターミナル作業の作業でセッションが切れて焦った経験はありませんか?

以前は私も「リモートで作業」そのような環境に悩まされていました。特にセブ島はインターネット環境が、比較的悪いと言われていて、時々インターネット回線が切断されることがあります。

この「リモート作業」でどのようなことを実施するか?については、下記の記事で紹介していますので、こちらの記事も合わせて読んでください。

レンタルサーバでプログラミングする方法【→レンタルサーバでできる!】

このように、ネットワークが不安定で、途中で止まってしまうような環境では、作業がとまってしまい、長時間かかるコマンド処理の結果が得られず、なかなか作業が進まない為、ターミナルを使ったリモート作業中のエンジニアにとっては、死活問題になります。

こんな時にこのscreenコマンドを使うと、サーバとクライアントPCのターミナルによるセッションが切れても、後からそのセッションにアタッチすることができます。

これによって以前は諦めていたセッション断による作業を継続することができるようになりました。

Linuxのsshが切断しても処理を継続させる方法の詳細

detail of continuing way of ssh connection

screenセッションを起動する

$ screen

現在のscreenセッション一覧を確認する

下記の例では、ID:10000番XXXXXという名前のセッションがデタッチ状態であります という意味になります。

※実際には、XXXXXは具体的な数字になります。

$ screen -ls
There is a screen on:
        10000.pts-1.XXXXX   (Detached)
        1 Socket in /var/run/screen/S-XXXX.

screenセッションにアタッチする

複数のセッションがある場合は、 screen -ls で調べたIDを指定してセッションにアタッチすることができます。

$ screen -r

screenセッションをデタッチする

$ screen -d

screenセッションに名前を付ける

ここでは「hogehoge」という名前をつけた例を書きます。

$screen -S hogehoge

screenで他のユーザーにセッションを共有する

screenコマンドを「setuid root」に設定

chmod u+s /usr/bin/screen

/var/run/screenのパーミッションを755に設定

chmod 755 /var/run/screen

名前指定でscreenセッションを開始する(今回は、hogehogeという名前のセッションを開始)

$screen -S hogehoge
  1. Ctrl+a で「:multiuser on」を入力して、マルチユーザーモードをonにする。

  2. Ctrl+a で「:acladd userB」を入力して、ユーザー”userB”をこのセッションの共有に追加する。

  3. 「screen -ls userA/」と実行して、リストにセッション名が入っていることを確認する。

$screen -ls userA/

-xオプションでhogehogeという名前のscreenセッションにアタッチする

$screen -x userA/hogehoge

-linux
-, , ,

Copyright© Tommy's blog , 2020 All Rights Reserved Powered by AFFINGER5.