linux

【Linux】ssh切断してもコマンドを継続させる方法【結論:screenを使う】

how to keep connecting ssh in disconnecting on linux
プログラム学生
プログラム学生

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

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

Tommy
Tommy

Linuxのssh切断してもコマンドを継続させる方法の概要

皆さんは、ターミナル作業の作業でセッションが切れて焦った経験はありませんか?私は以前はそのような環境に悩まされていました。特にセブ島はインターネット環境が比較的悪いと言われていて、時々インターネット回線が切断されることがあります。このような環境では、ターミナル作業中のユーザーにとってはけっこう死活問題です。こんな時にこのscreenコマンドを使うと、サーバとクライアントPCのターミナルによるセッションが切れても、後からそのセッションにアタッチすることができます。これによって以前は諦めていたセッション断による作業を継続することができるようになりました。

programing

Linuxのssh切断してもコマンドを継続させる方法の詳細

セッションを起動する

$ screen

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

下記の例では、ID:10000番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.