teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

実行例追加

2016/02/13 06:01

投稿

unau
unau

スコア2468

answer CHANGED
@@ -4,4 +4,22 @@
4
4
 
5
5
  もし、ログアウト後もずっとジョブを実行させておきたい、という場合には、screen や tmux といったツールを使うとよいと思います。screen や tmux の機能はそれだけではないし、正確な説明ではないですがざっくり言いますと、対話シェルを起動する土台となるプロセスと、その土台プロセスに接続して操作する仮想端末になるプロセスとで構成されます。screen と実行すると、土台となるプロセスと端末プロセスが作られます。screen の中で複数の対話シェルを起動し、それを端末プロセスの中で切り替えて使うことができます。で、端末プロセスの側で土台プロセスとの接続を切ったり、またつないだりということもできます。
6
6
  話を整理します。screen を実行し、そこの対話シェルで xxx とコマンドを打ってジョブを起動します。その後、screen をデタッチします(土台の screen との接続を切ります)。土台の screen は動き続け、その上の対話シェルも xxx コマンドもジョブも動き続けたままです。screen -ls とすると土台の上で動いている対話シェルのリストを見ることができます。この後、ログアウトしても土台は動き続けます。翌日とかに新たにログインし、screen -r とすると、デタッチしていた対話シェルに再び接続することができます。
7
- ちょっとわかりにくい説明で済みません。
7
+ ちょっとわかりにくい説明で済みません。
8
+
9
+ --- 追記
10
+ ```terminal
11
+ [takeyuki@localhost ~]$ screen
12
+ 【この下から新しいウィンドウ】
13
+ [takeyuki@localhost ~]$ while sleep 1; do echo -n .; done
14
+ ....
15
+ 【適当なところで Ctrl+a d でデタッチ】
16
+ [takeyuki@localhost ~]$ screen -ls
17
+ There is a screen on:
18
+ 9538.pts-0.localhost (Detached)
19
+ 1 Socket in /var/run/screen/S-takeyuki.
20
+
21
+ [takeyuki@localhost ~]$ screen -r
22
+ 【さっきの続きに戻る】
23
+ [takeyuki@localhost ~]$ while sleep 1; do echo -n .; done
24
+ .................................................................................................................................................................................................................................................................................
25
+ ```