サーバーに SSH して、1時間かかるバックアップを走らせてた
途中で Wi-Fi が切れて、戻ったら処理まで止まってた
【疑問】SSH が切れたら長い処理まで止まった。tmux と screen で端末を切り離すって何【LPICレベル1】
>>1
SSH が切れると、そのログインのシェルとそこから起動したプロセスに SIGHUP(回線が切れた合図)が送られて、ふつうは終了する
切れても続けたいなら、nohup で SIGHUP を無視させるか、tmux や screen の中で動かす
>>2
nohup でええなら、tmux とか要らんやん
>>3
nohup は「走らせっぱなし」にするだけで、あとから画面に戻って続きを見たり、キーを入力したりはできない
tmux と screen は、端末そのものをサーバー側で生かしておいて、あとでつなぎ直せる
>>4
tmux の使い方は?
>>5tmux new -s backup で backup という名前のセッションを作って、その中でコマンドを動かす
切り離す(デタッチ)のは Ctrl+b を押してから d
一覧は tmux ls、戻る(アタッチ)のは tmux attach -t backup
>>6
回線が切れたときも、自分でデタッチしたのと同じになるん?
>>7
なる。セッションはサーバーで動き続けてるから、つなぎ直して tmux attach すれば、切れたときの画面のまま
screen だとどうなるん
>>9screen -S backup で名前付きのセッション、デタッチは Ctrl+a を押してから d
一覧は screen -ls、戻るのは screen -r backup
>>10
最初のキーが Ctrl+b と Ctrl+a で違うんか
>>11
この最初のキー(プレフィックスキー)を押してから次のキーで操作する、というのは共通
ウィンドウを増やすのは tmux で Ctrl+b c、screen で Ctrl+a c
>>12
それなら、どっちか1つ覚えれば十分やろ。両方覚える意味ある?
>>13
ふだん使うのは1つでいい。でも入ってるサーバーがどっちかは環境しだいで、試験の範囲(103.5)にも両方の名前が入ってる
デタッチ・一覧・アタッチの3つを、両方で言えるようにしておくと困らない
tmux の中で画面を分けることもできるんやろ
>>15
できる。Ctrl+b % で左右、Ctrl+b " で上下に分ける
左でログを tail -f しながら、右で作業する、みたいな使い方ができる
セッションを終わらせるには?
>>17
中のシェルで exit するか、tmux なら外から tmux kill-session -t backup
デタッチしたまま忘れると、ずっと残る。tmux ls でときどき確かめる
>>1
もう走らせてしまったコマンドを、あとから tmux に移すことはできる?
>>19
tmux と screen には、動いてるプロセスを取り込む機能はない
bash なら、Ctrl+z で止めて bg で裏に回し、disown でシェルの管理から外すと、ログアウトしても SIGHUP が送られなくなる。画面に戻ることはできないから、最初から tmux の中で動かすのが確実
管理人のひとこと
- SSH が切れると、ログインしたシェルから起動したプロセスに SIGHUP が送られて止まる。nohup は走らせっぱなしにするだけで、あとから画面に戻れない。
- tmux:
tmux new -s 名前、デタッチは Ctrl+b → d、一覧tmux ls、戻るtmux attach -t 名前。screen:screen -S 名前、Ctrl+a → d、screen -ls、screen -r 名前。 - 回線が切れてもセッションはサーバーで残る。動いているプロセスをあとから取り込むことはできないので、長い処理は最初から中で動かす。