#author("2024-02-11T11:05:38+09:00","","") #author("2024-08-31T11:07:21+09:00","","") #topicpath //////////////////////////////////////////////////////////////////////////////// * 目次 [#vc249053] #contents(); //////////////////////////////////////////////////////////////////////////////// * 設定 [#nece9c8d] - 設定は、${HOME}/.screenrc に記述する。 - Debianなら、以下にサンプルがあるので、${HOME} 配下にリネームして持ってくると良い。 /usr/share/doc/screen/examples/screenrc //////////////////////////////////////////////////////////////////////////////// //============================================================================== ** エスケープキーを再定義する [#nb4285fb] - デフォルトでは C-a になっているので、bashの「行先頭に移動」と被ってしまう。これを回避するのに便利。 - 以下は、エスケープキーを "@" に変更する例。screenの画面上で文字として "@" を入力したい場合は、 "@@" を打てばよい。 escape @@ - 但し、&color(red){本頁では、screen のエスケープキーを一貫してデフォルトの "C-a" で記す。}; //////////////////////////////////////////////////////////////////////////////// //============================================================================== ** 画面最下段にハードステータス(ステータスライン)を表示する [#q83168b0] hardstatus alwayslastline "%Lw" - 1行分、ステータス表示に使われる。 - ここに、タイトル等が表示される //////////////////////////////////////////////////////////////////////////////// * 基本操作 [#z168decf] //============================================================================== ** 新規生成 [#create-session] $ screen -S <session-name> -t <title> [command] [command-arg(s)] ... - 必須の引数は特にない。が、attach/dettach などをするには、分かり易い session-name を付ける方が良い。 - -S <session-name>: セッション名を指定する。セッション名は、attachするとき等、セッションの識別に用いられる。指定しない場合、PID等を組み合わせて自動的にセッション名が割り当てられる。 - -t <title>:タイトルを指定する。タイトルは、ハードステータスに表示される - screen は通常、新しいセッションの起動時にシェルを起動する。しかし、コマンドを引数に渡して起動した場合、シェルではなくそのコマンドを起動する。その場合、呼び出すコマンドとその引数は、screenに渡す引数の最後に置く。 //============================================================================== ** attach [#attach-session] - どこからも attach されていない session を attach する $ screen -r <session-name> - session を attach する。若し attach 中であればその前に detach する。 $ screen -dr <session-name> - 既にattachされているsessionを強制的にattachする $ screen -x <session-name> - attach する場合に指定する <session-name> は、 [[screen の一覧>#list-session]]の中から部分一致で一つの session を特定出来るようなものであれば何でもよい。 //============================================================================== ** detach [#detach-session] - 直接操作 C-a d - コマンドラインから(attach している terminal の window が消されたにもかかわらず detach 状態にならなかった session を detach するのに使える) $ screen -d <session-name> //============================================================================== ** 画面の分割 [#split-display] - 画面を分割し、新しい画面にウインドウを立ち上げ、ウインドウの分割を解除するまでの手順を示す: + 画面を分割する -- 画面の分割(水平方向) C-a S -- 画面の分割(垂直分割) C-a | + 分割された画面間の移動 C-a [Tab] + 新しいウインドウを作る C-a c -- 画面は分割しただけだと、新たに出来た方は shell が立ち上がっておらず、何も出来ない。それを使うにはこの操作が要る。 + 画面分割の解除 C-a X //============================================================================== ** 起動している screen session の一覧 [#list-session] - screen session 一覧の表示 $ screen -ls - 個々の出力は下記の書式になっている: <PID>.<session-name> //============================================================================== ** 終了 [#terminate-session] - ユーザがそのセッションを終了すべく操作するか、screenが起動したプロセス(デフォルトではシェル)が終了すると、そのセッションは終了する。 - セッションを直接終了する場合 C-a K - セッションとは違うウインドウ/コンソールから終了させる場合 $ screen -S <session-name> -X kill -- "-X <command>" で、指定したセッションにに対するコマンドとして <command> を送ることが出来る。 //////////////////////////////////////////////////////////////////////////////// * 参考リンク [#s4934c2b] - [[Screen User’s Manual>https://www.gnu.org/software/screen/manual/screen.html]] - [[USING SCREEN EXAMPLE part2>http://www.dekaino.net/screen/03example.html]] - [[Screen>http://risky-safety.org/zinnia/screen/]] - [[SCREEN Quick Reference>https://aperiodic.net/screen/quick_reference]]