GNU screen その2

このエントリーをはてなブックマークに追加
>907
(可能なら) screen の何枚目という情報と
shell prompt に出すような情報の両方をまとめて titlebar に
表示してやりたいということで,
やるとしたら shell (precmd()の結果) と screen の
連携にしないといけないので,screen 側で *まとめる何か* が
必要だろうなという意味... だったんですが,
そーか $WINDOW なんてのがあったのかー...
>>906
hardstatus もしくは caption
おれは zsh の RPROMPT に $WINDOW 出してるよ。
hostname % [/usr/local] Sc.1
こんな風に。
>>910
ちょっと気分転換にやってみたけど、これって数字が動的には変わってくれないのね。
まぁ :number することはめったにないからいいけど。
912910:04/04/11 17:27
:number なんて知らなかったよ。
本当は名前つけて title 出したいんだけど、
できるかどうかわからんし面倒なのでやってないんだ。
ちなみに screen 使ってない時は tty の番号を表示して区別してる。
zsh だと %l
:number N で番号の変更できたんだ。知らんかった。

ちなみに漏れはこうしてる
.screenは、
defhstatus "^Et"
hardstatus string "(%n) %h"
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

bashのPS1は、(TERM=screen のとき、)
\[\ek\W\e\\\e]0; [ \u@\h : \w ] \a\]\$
9141/2:04/04/16 21:41
>>896の4.0.2用 + accept が ECONNABORTED になる場合がある問題の修正

begin-base64 644 screen-4.0.2-cygwin.patch.gz
H4sICFfMf0ACA3NjcmVlbi00LjAuMi1jeWd3aW4ucGF0Y2gAzVdtb5tIEP4c
/4pJovYgBgeInfjlUqWJOV/U1I5sp1VOJyECaxuVgAVLmlyb/34zy4shtqtU
lU5nWSzMzgwzzzO7O7jebAZqlEDsRIwFarOhNYzDey92Gk5FpjpP869ekE3V
VFXdZLJjaNqRqhuq1gLD6DZb3abe0PIf1LWOptXq9foPXJOLpop//RgMvau1
uoa25uLsDNRj/Ug5gXo6nJ3VAH8HhzXYBxa43gwOD2Bomv2JOTWHn9IZ5seM
5DcTcyVW9wG1XTbzAuZKvhckjzJ8/15ILMsJgwf2aFlCLJ1P+vDuFPROR9eO
5Fr9l8yrmhe3g8+XQ9SkZGLGWfAgPdiRAg+2nzAFdLkn8sM0NmrgtLuR0CV/
2sKnmFmnU4hTNrWOqrXBOOoax129/Wo2Cw/rZOqtY6NVJfOoSVyKK1G5Lyis
QY3YmoURxKFvR14MRkNX4CbwHr/aEQNp8mncbBgy2IELyzCOvTv/CUK+YFGc
UuvNEF348/0n0yJd63p6O0HKSoxV52R4+xZ2NzKCPAeOn7gMfo+f4sOYR+GS
x43Fu1K4m9GPQ+cL41sIyCfXOchn1mloaa+moezkVUy0Tk6UY6jTUCwr/EWM
J1EAqt5LJc/FQqvVAVgUBSGcgiZmEV0Jiz5gDpdiBSSEKnE4UCi260ZwgCjb
CqDYZ4E0QfG1zRcy1AGpPD3Fl8jpS77lbyeP+A45jbDdEhG2j5VmqxSi44cx
9152/2:04/04/16 21:41
k2K5lwtiOC0HXCc/UhbqKZiXw+vxaDA2JxOZ5uh19dRw5lq4tnDo5RIv4AQB
PueSP/rWX+Z4JL2duXKvJMSNhZKuiNESQ4mZLxDBPLGIhzdXV0Itv6XrygQj
Jatd3CnkXFaKMFMRmJREAB/jeZqiAntv4m720j0FCph7ZQOX3SVzae+j/YVd
+B4L+ETUSxcy/mBmez5zG38He1XDFdglYQ54IXrOb8WWtTkNKgusA4sDrie8
qXgk3HFrq8hSNQLU+4eFM9z//GoYCMyccfKLqkTGZHRlTUYXH8wp3VvmeDwa
I/ZoiNfUXVF4FTS/VR+3YL4J91UAW7H/Jfy3crCRhwoXWR6YPZWX9kspCwhF
wlnA/8Nss1uxY6XnAZ7/tE7Nm8s+bQ6PdJAmniux2czCMd1BhHSeSedCSrtP
R2vTUdVpthVdF7vPTgqFhkC859x2FmBzzu6XHL56fAF3Np5N6OaNK+8iOveN
+4Yt1Br2Mn9X/ruLmP0FJTvP4pCiWEfWcHQxnd6uNgaQJE9sJ064xP0THVqc
PymoOe5/HsN3YTI8v8KCzx7IXkGmZfhd8L2fdxA/7bDqJT31dr4VGOQrIMWh
Cxdh4rsQhLS2ccm+iTMEyD9ljmYfPN+XXoCCNXQ5sM5vza0NTcLvl1sO1HRq
/ThN5S8P05OufvLqw3Tl4lVHabtDlSKuVCcxt7nniC0NLx4nb2BZ15L0EGIh
EB6ZCj1Td5dgf8dfqGSoq/vrXSe2LrlkYE5vsMGdymmzI/2oPy16nC0e8qiy
Y1yEffC4TDA8dMfS+CqTdE2DzdzBSntlWORCWOmaQWClQ7UFfNGhF4FRtFLR
q1EL9yKxxRJzfdmh/6z5jxrCsl+hTe2qEyXMB3rEc99nNn5yYNecfZrAOiBW
GRBYfbwID2iVtjyilFqlWirDjUiLVilR3yXc4k9Lhsu5b77vW9jhXGCD00vr
ZXd7GZgfsf3NqmX3teWybl8EwR493mAWZ9G9F2D5hEHRHlYUaMhmStXQbolN
Nh0o3+fKd935zWBwi0RejQaXQ4Hsf7oe9iEJaGsuESc+VGw7mi8UED5/KzGc
9s6xWNa7FO6/HqPybnYPAAA=
====
cygwin patchって定期的に出ては消えるよね。
取り込まれないのは何で?
cygwin自体の挙動がコロコロ変わるからじゃない?
^Z : screen
という一連の流れを ^Z e とか空いているキーバインドに当てたいんですが、
何かうまい方法はあるでしょうか? (escape を ^Z にしてます)

何がやりたいかというと、例えば make 中に top を表示したい時などに、
^Z ^C で新たに shell を起動して top するよりは、
^Z : screen top
とした方がメモリもCPUも節約できます。
ですが、毎回 ^Z : screen とタイプするのは面倒くさいので、
そこまで自動化できないかな、と思ったのです。

zsh で一万行近くある history を全部読み込ませてるので、
shell の起動も馬鹿にならないんですよね。
bind e colon 'screen '
bash で 2万4千行ある history を使っているが起動は遅くなんかないよ?
921918:04/04/21 21:17
>>919
すばらしい。こんなに簡単にできるとは。
ありがとうございます。
他にもいろいろ応用がききそうですね。

>>920
単純にマシンパワーの問題だと思いますが、
早くて1秒、平均 3 秒くらいかかります。
crusoe 533MHz です。
>>921
おれもzshでhistoryが10000行ある。
暴走したscreenでzshが動いたままscreenをkillするとhistoryが消
えるので注意。
>>921
crusoeはアプリの起動にものすごく時間がかかるCPUだからな。
tty なコマンドを2つ起動して,両方が終了するのを waitpid() したいです.
現在は,fork() して xterm -e command みたいなのを呼んでいるんですが,
ここで,screen を使って
system(screen -e command1 -e command2) (-e は xterm 的イメージ...)
みたいなことって出来ないですかね...
man にはそれらしい option は見当たらないんだけど...
>>924
よくわからんが、これでどう?
cat <<EOF >hoge
command1
command2
EOF
screen -c hoge
>925
目的は screen のコマンド,じゃなくて shell から
起動するコマンドを2つ並列で走らせたい,ということなんです.
で,両者とも tty 出力をする(かつ,自分がその tty を眺めたい)奴等なので
screen が使えるといいな,と.
最初から画面 0,1 にそれらを割り当てて実行して,両者が終了と
同時に screen も終了するような "screen の起動の仕方" が
あるなら嬉しいです.

screen の最初の引数で実行コマンドを与えられますが,
第2画面(screen 1)の内容を C-a c とか打たずに起動時に指定したいんです.

>>926
これはだめ?
command1 >hoge1 & command2 >hoge2
928924,926:04/05/04 10:28
>927
片方は editor なんです.
もう片方は redirect でいけなくはないけど,
うまいこと眺めたいなー,と.

(ちなみに,現在は fork() して片方は X な emacs を立ち上げて,
残った kterm の中はもう一個のプロセスに tty 出力させてます.
でも tty人としては "カッコワル..." ということでして)
>>928
screen sh -c 'screen sh -c echo\ 2\;sleep\ 10 ; echo 1;sleep 10'
930925, 927:04/05/04 11:33
>>926
>>925はちょっと間違ってた。
cat <<EOF >hoge
screen command1
screen command2
EOF
screen -c hoge
今試してみたけどcommand1とcommand2が終了するとscreenも終了す
るぞ。
というかこれでscreenが終了しなかったら、screenはいつ終了するんだ?
931929:04/05/04 11:45
>>930
そこを間違ってたら >>926 みたいな勘違いするだろ
932930:04/05/04 11:50
ああ、すまんかった。おれもそう思った。
933924,926:04/05/04 12:13
>929
おっ,なるほど〜.ありがたくパクらせて頂きます.
(screen -c と違って ~/.screenrc も有効ですし)
>930
なるほど,そういうことだったのですね.気づかない私が未熟でした.

あとあと,もしかして同じ pty なところで screen 叩いちゃえば
いいんじゃないの,と fork して両者で問答無用で screen 起動したら
悲惨なことになって(2つの screen が tty を奪い合っていたっぽい感じ...),
やっぱり2個めは screen 起動した中からじゃないといけないんだなぁ,
というところまでは辿り着いたところでした.

なにはともあれ,ありがとうございます >929,930
934924,926:04/05/04 15:41
Unix USER 2004/1 の screen の記事を見ていたら -X というのが
私の希望のものに近かったようです.
というわけで別解としては
screen -S sessionname command1
しておいてよそから
screen -S sessionname -X screen command2
を投げるというのもアリのようですね.
HELP!!!

vim を使って終了するとプロンプトの最初の一回や screen の
ステータスラインの色が vim の色に変わって困ってます

また,新規ではなく vim hoge.txt 等として既にあるファイルを開こうとすると
vim の文字色全てが黄色になります

OS: OpenBSD
SSH Secure Shell 3.2.9: terminal answerback=ansi
bash 2.05b: TERM="ansi"
.screenrc: term ansi
.vimrc: 色に関する設定は一切していません
>>935
端末はなにを使っている?
screenのバージョンは?
このMLってなくなったの?
http://groups.yahoo.com/group/gnu-screen
>>936
screen は Screen version 4.00.02 (FAU) 5-Dec-03 です
端末は ssh.com の SSH Secure Shell 3.2.9 for win です
>>938
そんな端末があるのか。知らなかった。
TERM=screenにしてみたらどうなる?
端末,screenrc の TERM を vt100, xterm, kterm, xterm-color, kterm-color, screen と
いじってみましたが変わりません。相変わらず変な色になってしまいました...
ANSIカラーシーケンスがまともに使えて、VT100なエスケープシーケンスを使い
まくるcursesアプリで問題が出にくいターミナルエミュレータってそんなに多
くないからなぁ。

端末の設定で色を使わないようにするのがいちばんじゃない?
SSH Secure Shell 3.2.9 for winってのを使おうと思ったら有料かよ。
VT100 準拠の端末エミュレーション
って書いてあるから、
$TERM=vt100 screen
のようにvt100の状態でscreenを起動してscreenrcのtermはscreen
のままでいいと思う。

もし可能ならttyrecのデータをどっかにupしてほしい。
http://zauup.hp.infoseek.co.jp/cgi-bin/uploader.html
$TERM=vt100
$ttyrec
$screen
>>942
無料なのもあるでそ 日本語使えないけど
>>942

ありがとうございます
端末を vt100 で screenrc を screen にしたらできました

もしかするともしかして端末:vt100,. screenrc: screen てデフォルトだったり?
何はともあれお騒がせしました
>>944
screenrcのtermは基本的にはscreenにする。
TERMのvt100ってのは使ってる端末に合わせる必要がある。
946918:04/05/08 05:47
よくわからんが vim 使った前後で TERM がかわったんですか?
>>946
それはないと思う。screenはエスケープシーケンスを端末に合うよ
うに変換してるけど、それがうまくできなかったんじゃないかな?

>>945の補足だけど、term screenの状態だとw3mではマウスが使え
ないから
TERM=xterm w3m
のようにごまかす必要がある。
screen -xRR
これ最強。multiモードでattachする。なければ作る。複数あった
場合は最初のやつにattach。
949924:04/05/08 10:26
結局 >934 のようなことをしています.
現在は,screen を呼び出す親のプログラム側は
fork() して 片方で screen com1 して
もう片方は "ちょっと sleep 1" してから screen -X ... を
してます.
で "ちょっと sleep 1" が,ちょっとかっこ悪い気がするんですが,
他に方法ないですかねぇ...
>929 みたいに一発で起動するのがカッコイイんですが,
2つくらいならともかく,それ以上の shell escape を考えたくないもんで.

よろしくおねがいします
>>930でいいじゃん。
cat<<EOF|cat ~/.screenrc - >/tmp/screenrc
screen command1
screen command2
screen command3
EOF
screen -c /tmp/screenrc
951924:04/05/08 11:47
~/.screenrc が見えなくていやと思ってたんですが
そっか,単につなげりゃいいのか...

>950 ありがとう
952名無しさん@お腹いっぱい。:04/05/22 23:35
ときどき C-s が効かなくなるんですけど、理由がよく分かりません。間違っ
たキーを押してしまってると思うのですが、解決策はありますか?
defflow off
でもいれてみればいいかも。
>>952
とりあえず C-q を押して、その後、
「-flow」か「+flow(auto)」になるまで C-a C-f を連打しる。
>>953-954
ありがとうございます。C-aC-f を押してたわけですね。
知らんかった…。
参考になる +1
flow control って基本的にうざいけど、
console で作業してるとまれに使うこともあるね。
screen 起動し忘れた時なんかに。