Posted at

screenコマンドの要点

More than 3 years have passed since last update.

linuxサーバーにSSHログインして何か作業をしていて、突然通信が途絶えたり、PCの電源が落ちたりすると、実行中の処理が中断されてしまいますが、screenを使うとそういう不安から開放されます。

詳細はmanに書いてあるので、ここでは最低限覚えておくといい事だけを書きます。


用語

語句
意味

セッション

screenが作る仮想端末。1つのセッションの実体は1つのscreenプロセス。

ウインドウ
セッション内での仮想的なウインドウ。1セッションに複数作って、切り替える事ができる。ウインドウの実体はscreenプロセスの子プロセスとして動作するシェル。

デタッチ
セッションから切断すること。デタッチしてもセッションは生き続ける。

アタッチ
デタッチしたセッションに再接続すること


基本的な操作

新しいセッションを作る。

$ screen

セッションからデタッチする

# 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。アタッチするときに使う。

他のだれもアタッチしてないセッションにアタッチ

$ screen -r <pid>

# もし、セッションが1つしかないなら
$ screen -r
# でもOK

セッション内で新しいウインドウを作る

Ctrl-a c

# または
Ctrl-a Ctrl-c

直前に表示していたウインドウに切り替える

Ctrl-a Ctrl-a

次のウインドウに切り替える

Ctrl-a n

# または
Ctrl-a Ctrl-n

前のウインドウに切り替える

Ctrl-a p

# または
Ctrl-a Ctrl-p

セッション内のウインドウを一覧表示する。

一覧ではj,kキーで表示するウインドウを選択出来る。

Ctrl-a "

現在のウインドウに名前をつける

Ctrl-a A

現在のウインドウを閉じる

Ctrl-a k

他の誰かにアタッチしてるセッションを横取り

$ screen -d -r <pid>


コマンド

Ctrl-:と入力するとコマンドを受け付けるモードに入ります。

コマンドによってscreenの挙動を変更することができます。

http://www.gnu.org/software/screen/manual/screen.html#Commands