Edited at

Linux screenコマンド使い方

More than 1 year has passed since last update.

かなり基本的な操作について

screenを使ったことがない人は、たぶん<ctrl> + <a>という操作に慣れないと思う。慣れればなんてことはないだろうけど。

3つの目的別に説明。

(1)スクリーンでセッションを保存

(2)スクリーンで画面分割

(3)スクリーンでマウスを使わずにコピー&ペースト(画面のスクロール)


(1)スクリーンでセッションを保存

作業している状態を保存する。マシンの電源が切れない限り保持される。

たとえば、普通にログインしてジョブを流していると、いつの間にかsshの接続等が切れてjobが止まってしまうときがある。screenで生成したセッション内で計算を投入し、セッションからデタッチ(一時的に離れる)しておくことで、途中で計算プログラムが止まることがなくなる。


新しいセッションを作る

screen


セッションを一時的に離れる(デタッチ)

<ctrl> + <a> 

d

一旦、コントロールとaを同時に押してから、dを入力する。


screenの状態を確認する (セッションの一覧表示)

screen -ls


アタッチする

screen -r

複数のセッションがある場合は、 screen -ls で調べたIDを指定してセッションに戻る。


セッションに名前を付ける

screen -S hogehoge

として新規スクリーンを作ると、screen -r hogehogeでアタッチできる。

小技

以下のように,IDの先頭が重複しないように名前を付けておくと,先頭の(数)文字を指定するだけでアタッチできるので,管理しやすい。

[hnishi@centos ~]$ screen -ls

There are screens on:
2947.a_bsc (Detached)
17657.b_test1 (Detached)
17897.c_test2 (Detached)
3 Sockets in /var/run/uscreens/S-k007200.

[hnishi@centos ~]$ screen -r b


既にアタッチされているスクリーンに強制的に入る

screen -rx ID


(2)スクリーンで画面分割

どんなターミナルでもscreenが入っていれば画面分割して作業できる。


水平方向に画面を分割

<ctrl> + <a> 

S

コントロールキー+aを同時に押した後で、大文字のSを入力する。


分割された画面の移動

<ctrl> + <a> 

<tab>


新しい端末を作る

分割された画面にできた、何もない空間に移動して以下を実行する。

<ctrl> + <a> 

c


垂直方向に画面を分割

<ctrl> + <a> 

|


分割したスクリーンを消して、元に戻す

<ctrl> + <a> 

X


(3)スクリーンでマウスを使わずにコピー&ペースト

コマンドライン操作に慣れてくると、マウスを使うことが億劫になってくる。

スクリーンを使えば、キーボードだけでターミナル上の文字列をコピペできる。


コピーモードに入る(画面のスクロール)

<ctrl> + <a> 

[

コピーモードに入ると、カーソルが矢印キーで自由に動かせるようになる。

PageUpとPageDownキーも画面を大きく動くときに利用できる。

コピーしたい始点でSpaceキーを押して、終点でもう一度SpaceキーもしくはEnterで、バッファーに一時保存できる。

なお、コピーモードではスクロールが自由。通常のスクリーンのセッションではマウスのホイールキーを使って端末の出力をさかのぼって見ることができないが、コピーモードを使って画面をスクロールするという使い方もできる。


ペースト

<ctrl> + <a> 

]

スクリーンを起動していれば、どんな状態のときもコピーモードに移行とペーストが利用できる。


参考

ほかにもいろいろなscreenコマンドがある。

http://aperiodic.net/screen/quick_reference