セッション管理
セッションの作成と一覧表示
screen # 名前なし新規セッション screen -S work # "work" という名前で新規セッション screen -ls # すべてのセッションを一覧表示 screen -list # -ls と同じ
セッションコマンド
screen -S name名前付き新規セッションを開始
screen -r nameデタッチされたセッションに再アタッチ
screen -x nameアタッチ中のセッションを共有する
screen -d nameリモートセッションをデタッチ
screen -d -r name他でデタッチしてここで再アタッチ
screen -D -RR強制デタッチして再アタッチ(強制実行)
screen -lsPID 付きですべてのセッションを一覧表示
screen -wipe無効なセッションをクリーンアップ
ウィンドウ
ウィンドウ基本操作
Ctrl-a c新しいウィンドウを作成
Ctrl-a n次のウィンドウ
Ctrl-a p前のウィンドウ
Ctrl-a 0-9番号でウィンドウに切り替え
Ctrl-a "すべてのウィンドウを一覧表示(インタラクティブ)
Ctrl-a '名前または番号でウィンドウに切り替え
Ctrl-a A現在のウィンドウ名を変更
Ctrl-a k現在のウィンドウを削除
ウィンドウ管理
Ctrl-a wステータスラインにウィンドウ一覧を表示
Ctrl-a Ctrl-a最後の2つのウィンドウを切り替え
Ctrl-a Nウィンドウ番号と名前を表示
exit / Ctrl-dウィンドウを閉じる(シェル終了)
分割とリージョン
分割コマンド
Ctrl-a S水平分割(上下)
Ctrl-a |垂直分割(左右)
Ctrl-a Tab次のリージョンにフォーカスを移動
Ctrl-a X現在のリージョンを閉じる
Ctrl-a Q現在以外のリージョンをすべて閉じる
リージョンのワークフロー
Ctrl-a S # 水平分割 Ctrl-a Tab # 新しいリージョンに移動 Ctrl-a c # リージョンにウィンドウを作成 Ctrl-a :resize 20 # リージョンを20行に設定
コピーモード
スクロールバックとコピー
Ctrl-a [コピー・スクロールバックモードに入る
Space選択の開始・終了(コピーモード内)
Enter選択をコピーしてコピーモードを終了
Ctrl-a ]コピーしたテキストを貼り付け
h/j/k/lカーソル移動(コピーモードで vi キー)
Ctrl-u / Ctrl-d半ページ上下にスクロール
/ または ?前方・後方検索
Escコピーモードを終了
コピーのワークフロー
Ctrl-a [ # コピーモードに入る Space # 開始位置をマーク(先に移動) Space # 終了位置をマークしてコピー(先に移動) Ctrl-a ] # 現在のウィンドウに貼り付け
デタッチと再アタッチ
デタッチ
Ctrl-a d現在のセッションをデタッチ
Ctrl-a D Dデタッチしてログアウト
Ctrl-a zscreen を一時停止(Ctrl-Z と同様)
screen -d PIDPID でセッションをリモートデタッチ
再アタッチ
screen -r # 再アタッチ(セッションが1つの場合) screen -r work # 名前で再アタッチ screen -r 12345 # PID で再アタッチ screen -d -r work # 他の端末からセッションを奪取
継続的なワークフロー
# 長時間タスクを開始してデタッチし後で再接続 screen -S build make -j4 all # ビルド開始 Ctrl-a d # デタッチして退席 screen -r build # 後で再アタッチ
共有
マルチユーザーモード
# ホストがマルチユーザーを有効化 Ctrl-a :multiuser on Ctrl-a :acladd alice # ユーザー alice にアクセス許可 # alice がアタッチ screen -x hostuser/sessionname
アクセス制御
:multiuser onマルチユーザーモードを有効化
:acladd userユーザーにフルアクセスを許可
:aclchg user -w '#'ユーザーを読み取り専用にする(全ウィンドウ)
:acldel userユーザーのアクセスを削除
screen -x user/sess共有セッションにアタッチ
設定
~/.screenrc の基本設定
startup_message off # 起動メッセージを非表示 defscrollback 10000 # スクロールバッファ行数 hardstatus alwayslastline hardstatus string '%{gk}%H %{wk}%?%-Lw%?%{bw}%n*%f %t%{wk}%?%+Lw%?' shell -$SHELL # ログインシェルを使用
便利な設定
startup_message off起動メッセージを抑制
defscrollback Nスクロールバッファを設定(デフォルト 100)
escape ^Bbプレフィックスキーを Ctrl-b に変更
shelltitle '$ |bash'ウィンドウタイトルを自動設定
caption always '%n %t'ウィンドウ情報付きキャプションを常に表示
autodetach onハングアップ時に自動デタッチ(デフォルト有効)
vbell on音の代わりにビジュアルベルを使用
よく使うパターン
開発環境のセットアップ
# .screenrc でウィンドウを自動作成 screen -t editor 0 vim screen -t server 1 python -m http.server screen -t shell 2 bash select 0 # エディタウィンドウから開始
ログとモニタリング
Ctrl-a H # screenlog.N へのログ記録を切り替え Ctrl-a M # ウィンドウのアクティビティを監視 Ctrl-a _ # ウィンドウのサイレンスを監視
クイックリファレンス
Ctrl-a ?すべてのキーバインドを表示
Ctrl-a :help組み込みヘルプ
Ctrl-a :source file設定ファイルを読み込む
Ctrl-a :screen cmd新しいウィンドウでコマンドを実行
Ctrl-a :quitすべてのウィンドウを削除してセッションを終了