linuxサーバーにSSHログインして何か作業をしていて、突然通信が途絶えたり、PCの電源が落ちたりすると、実行中の処理が中断されてしまいますが、screenを使うとそういう不安から開放されます。
詳細はmanに書いてあるので、ここでは最低限覚えておくといい事だけを書きます。
用語
語句 | 意味 |
---|---|
セッション |
screen が作る仮想端末。1つのセッションの実体は1つのscreenプロセス。 |
ウインドウ | セッション内での仮想的なウインドウ。1セッションに複数作って、切り替える事ができる。ウインドウの実体はscreenプロセスの子プロセスとして動作するシェル。 |
デタッチ | セッションから切断すること。デタッチしてもセッションは生き続ける。 |
アタッチ | デタッチしたセッションに再接続すること |
基本的な操作
新しいセッションを作る。
.bash
$ screen
セッションからデタッチする
.bash
# Ctrlを押しながらa、その後d(Ctrlは離して)
Ctrl-a d
# またはCtrlを押しながらa、その後d(Ctrlは押したまま)
Ctrl-a Ctrl-d
既に存在するセッションを一覧表示
$ screen -ls
#すると、こんなのが表示される。
There are screens on:
16472.pts-1.1hz (Detached)
17496.pts-1.1hz (Detached)
# 数字はpid。アタッチするときに使う。
他のだれもアタッチしてないセッションにアタッチ
.bash
$ screen -r <pid>
# もし、セッションが1つしかないなら
$ screen -r
# でもOK
セッション内で新しいウインドウを作る
.bash
Ctrl-a c
# または
Ctrl-a Ctrl-c
直前に表示していたウインドウに切り替える
.bash
Ctrl-a Ctrl-a
次のウインドウに切り替える
Ctrl-a n
# または
Ctrl-a Ctrl-n
前のウインドウに切り替える
Ctrl-a p
# または
Ctrl-a Ctrl-p
セッション内のウインドウを一覧表示する。
一覧ではj
,k
キーで表示するウインドウを選択出来る。
.bash
Ctrl-a "
現在のウインドウに名前をつける
.bash
Ctrl-a A
現在のウインドウを閉じる
.bash
Ctrl-a k
他の誰かにアタッチしてるセッションを横取り
.bash
$ screen -d -r <pid>
コマンド
Ctrl-:
と入力するとコマンドを受け付けるモードに入ります。
コマンドによってscreenの挙動を変更することができます。