

この記事で分かること
- リモート切断しても処理を継続させる方法が分かる
- 「screen」の使い方が分かる
Linuxのsshが切断しても処理を継続させる方法の概要
この記事では、sshでのターミナル作業中、ネットワークが切れた場合に、実施していた作業を継続させる方法を説明します。
昨今、レンタルサーバーの多くは、Linuxサーバーですが、もしこれを読んでくれているあなたが、ブログ運営などでレンタルサーバーを借りている場合、Linuxの仕組み仕組みを知ると、エンジニアとしての一歩を踏み出せるかもしれません。
Linuxの仕組みを知る上で、下記linux初心者向けの記事が参考になります。こちらも合わせて読んでください。
-
-
【linux】ファイル操作とディレクトリ構成【→初心者向け】
続きを見る
ところで、皆さんは、ターミナル作業の作業でセッションが切れて焦った経験はありませんか?
以前は私も「リモートで作業」そのような環境に悩まされていました。特にセブ島はインターネット環境が、比較的悪いと言われていて、時々インターネット回線が切断されることがあります。
この「リモート作業」でどのようなことを実施するか?については、下記の記事で紹介していますので、こちらの記事も合わせて読んでください。
-
-
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】
続きを見る
このように、ネットワークが不安定で、途中で止まってしまうような環境では、作業がとまってしまい、長時間かかるコマンド処理の結果が得られず、なかなか作業が進まない為、ターミナルを使ったリモート作業中のエンジニアにとっては、死活問題になります。
こんな時にこのscreenコマンドを使うと、サーバとクライアントPCのターミナルによるセッションが切れても、後からそのセッションにアタッチすることができます。これによって以前は諦めていたセッション断による作業を継続することができるようになりました。
Linuxのsshが切断しても処理を継続させる方法の詳細
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
- Ctrl+a で「:multiuser on」を入力して、マルチユーザーモードをonにする。
- Ctrl+a で「:acladd userB」を入力して、ユーザー”userB”をこのセッションの共有に追加する。
- 「screen -ls userA/」と実行して、リストにセッション名が入っていることを確認する。
$screen -ls userA/
-xオプションでhogehogeという名前のscreenセッションにアタッチする
$screen -x userA/hogehoge