userapps:screen
差分
このページの2つのバージョン間の差分を表示します。
| — | userapps:screen [2024/09/03 14:15] (現在) – 作成 - 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== screen ====== | ||
| + | **GNUscreen 5.0.0**が2024/ | ||
| + | |||
| + | 筆者はTerminal multiplexerとしてscreenを補助的に使う生活を3年くらい前までしていた。 | ||
| + | 要するにMultiplexerを使わずともTerminal Windowを複数立ち上げれば事足りた。 | ||
| + | |||
| + | 本格的にTerminal Multiplexerを利用するようになったのは、2021年ごろに海外の仕事を受けた際だったとおもう。 | ||
| + | 業務上、remoteの環境を操作する必要があったのだが、回線状況が悪いため、しばしばconnectionが切断される羽目に陥った。 | ||
| + | おかげで、日本にいる時は海外側の機器の操作にストレスが溜まり、海外で作業している時は「誤家庭のサーバー環境」の保守もできなくなった。 | ||
| + | |||
| + | というわけで、さすがにTerminal Multiplexerを使うしかなくなったタイミングで色々調べた上でtmuxを利用し始めた。 | ||
| + | |||
| + | なぜscreenではなくtmuxにしたかというと、tmuxでは複数painに対して同時にキー入力を行うことができたから。 | ||
| + | sshで接続している複数のVMに同じコマンドをバラバラに打つのは面倒である。 | ||
| + | 特にOSのUpdateの時などは、対象の台数が多く同時に9台の更新を行うこともあるので、painを移動しながら9回同じコマンドを入力するのは辛かった。 | ||
| + | 当時のscreen(4.8.0かな)ではこの問題を解決できなかったので、tmuxを選択した。 | ||
| + | |||
| + | しかし、筆者には、tmuxを使うようになってもscreenを使わざるを得ない状況が残っていた。それがserial console経由での機器設定である。 | ||
| + | MacからUSB serial cableやBluetooth serial adapterを利用してシリアルコンソール経由で機器設定する際にscreenが便利だったのだ。 | ||
| + | しかし、tmuxのpainの中でscreenを起動すれば、手が迷ってしまう。 | ||
| + | 特にlog取得や(screen側の)region移動と(tmux側の)pain移動など、command側に何かさせようとしたら手が迷って失敗も増えてしまった。 | ||
| + | もちろんserial制御にtipやcuなどの慣れている、古のcommandを利用することも十分に考慮の範囲だったのだが、macOS側の設定まで考えると設定の維持管理は面倒。 | ||
| + | screenの保守と比べたら比較にならない。 | ||
| + | |||
| + | というわけで、tmuxを使って手が慣れた今頃になって、screenが20年ぶりのMajor Version Upし、そこにmultiinputが入ったというアナウンスがあった。 | ||
| + | (なお、screenのMinor Version Upは年1回程度続いており、BugFixなどは継続して行われている。) | ||
| + | |||
| + | tmuxとscreenの同時併用に面倒な思いをしていた筆者は、multiinputに期待しscreenに一本化できることを期待して、screenを再度一から設定しようと考えたのであった。 | ||
| + | |||
| + | (マクラが長い...しかも単にポエムになっている... orz) | ||
| + | |||
| + | ===== Terminal Multiplexerの意味 ===== | ||
| + | TerminalをMultiplex(複合的な、多重送信→多重化)する(笑)というのは、直感的にはいわゆるTerminal Applications(xterm, | ||
| + | 画面分割などによる制御を手元のTerminal Appsで実行すると、Terminal Appsが死んだ時に動かしていたProcessが停止して困ったことになる。 | ||
| + | また、UNIXにおいてApplicationがつかんでいるptyを乗っ取ることはSecurityの観点などからよろしくないため、他のcommandsが握っているptyを乗っ取ることは原則としてしない。 | ||
| + | (多くの人にとっては事実上できないと言えるだろう) | ||
| + | |||
| + | というわけで、手元、Remoteを問わず、screenを用いて踏み台単位でMultiplexすれば良いということになる。 | ||
| + | そうすれば、multiplexerがptyやconnectionを維持しつつ、Detachしてlogoutすることもできるし、次回loginした時に、再度Attachして制御を取り戻すこともできる。 | ||
| + | |||
| + | この制御の継続性が、筆者がTerminal Multiplexerを利用する意味である。(この意味はあくまでも筆者にとってなので、そうでない人が多数いるだろうことは自明である。為念) | ||
| + | |||
| + | ===== screenとtmux ===== | ||
| + | screenとtmuxはTerminal Multiplexerに分類されるtool/ | ||
| + | 単に使う分には慣れの問題だが、凝ったことをしようとすると、用語と管理モデルの違いを認識しないと迷ってしまうことになる。 | ||
| + | |||
| + | ==== 用語の違い ==== | ||
| + | 大きな違いとして、Session, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Screen KeyBind ===== | ||
| + | screenにおけるKeyBind表 | ||
| + | ^ Key ^ raw ^ Sft ^ Ctl ^ raw ^ Sft ^ Ctl ^ | ||
| + | ^ a | meta | tittle | ||
| + | ^ b | break | pow_break | ||
| + | ^ c | screen | ||
| + | ^ d | detach | ||
| + | ^ e | | ||
| + | ^ f | flow | fit | flow | | ||
| + | ^ g | | vbell | ||
| + | ^ h | hardcopy | ||
| + | ^ i | info | focus | ||
| + | ^ j | | ||
| + | ^ k | kill --confirm | ||
| + | ^ l | redisplay | ||
| + | ^ m | lastmsg | ||
| + | ^ n | next | number | ||
| + | ^ o | | ||
| + | ^ p | | ||
| + | ^ q | xon | only | xon | ||
| + | ^ r | wrap | | wrap | | ||
| + | ^ s | xoff | spit | xoff | | ||
| + | ^ t | | ||
| + | ^ u | parent | ||
| + | ^ v | version | ||
| + | ^ w | windows | ||
| + | ^ x | lockscreen | ||
| + | ^ y | | ||
| + | ^ z | suspend | ||
| + | ^ 0 | select 0 | | ||
| + | ^ 1 | select 1 | | ||
| + | ^ 2 | select 2 | | ||
| + | ^ 3 | select 3 | | ||
| + | ^ 4 | select 4 | | ||
| + | ^ 5 | select 5 | | ||
| + | ^ 6 | select 6 | | ||
| + | ^ 7 | select 7 | | ||
| + | ^ 8 | select 8 | | ||
| + | ^ 9 | select 9 | | ||
| + | ^ [ | copy | | copy | | ||
| + | ^ ] | paste . | ||
| + | ^ < | readbuf | ||
| + | ^ > | writebuf | ||
| + | ^ { | history | ||
| + | ^ } | history | ||
| + | ^ . | dumptermcap | ||
| + | ^ . | license | ||
| + | ^ : | colon | ||
| + | ^ * | displays | ||
| + | ^ ' | ||
| + | ^ ? | help | | ||
| + | ^ @ | | ||
| + | ^ - | select - | | ||
| + | ^ = | removebuf | ||
| + | ^ _ | silence | ||
| + | ^ \ | | ||
| + | ^ %%|%% | | ||
| + | ^ " | ||
| + | ^ Tab | focus | ||
| + | ^ Spc | next | | ||
| + | |||
| + | ===== History ===== | ||
| + | --- // | ||
userapps/screen.1725287794.txt.gz · 最終更新: (外部編集)
