トップページunix
1001コメント276KB

GNU screen その3

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2005/03/21(月) 07:24:04
前スレがdetachされたので再attachしますた

前スレ
screenってどうよ http://pc.2ch.net/test/read.cgi/unix/1001966406/
GNU screen その2 http://pc5.2ch.net/test/read.cgi/unix/1048030339/
GNU screen その3 http://pc5.2ch.net/test/read.cgi/unix/1087436430/
0127名無しさん@お腹いっぱい。2005/06/05(日) 17:22:42
>>125
なにいってんの?
01281072005/06/05(日) 23:06:42
続き。

screen なしの kterm も数行毎に飛ばして描画してるみたい。
なんで screen on kterm で 1行毎に描画するかが分からない。
ちょうど kterm の読み込みより screen の出力が遅くなってるのかな。
0129名無しさん@お腹いっぱい。2005/06/06(月) 00:30:10
私のパソコンだとscreen有無にかかわらず0.6秒b烽ゥかってしまb、。
CPUはPentium4 2.66GHz、メモリは1GB。性能的には申し分ないのだが。
別個にグラフィックボードを装備せずにオンボードのやつを使っているから遅いのかな。
Xは24bpp。
0130名無しさん@お腹いっぱい。2005/06/06(月) 00:31:09
>>129
使ってる端末によってかなり違うと思うよ。
01311292005/06/06(月) 01:51:34
mltermです。
0132名無しさん@お腹いっぱい。2005/06/06(月) 09:28:57
mltermでaafont使ってるなら遅いよ
0133名無しさん@お腹いっぱい。2005/06/06(月) 10:14:02
aafont使ってないよ。
0134名無しさん@お腹いっぱい。2005/06/07(火) 01:16:14
そのものズバリ、「1行毎に描画する機能」を
制御するエスケープシーケンスがあるよ。

echo "\033[?4h" でオン(1行毎に描画)
echo "\033[?4l" でオフ(まとめて描画)になる。

これ試してみて。
0135名無しさん@お腹いっぱい。2005/06/07(火) 01:38:48
>>134
termcapもしくはterminfoのエントリ名は何?
01361352005/06/07(火) 01:42:08
h Smooth (Slow) Scroll (DECSCLM)
l Jump (Fast) Scroll (DECSCLM)
ってやつね。
Xterm Control Sequencesに載ってた。
01371292005/06/07(火) 03:48:38
#1行毎に描画
xterm without screen 4.828
mlterm without screen 0.210
kterm without screen 4.992
rxvt without screen 0.012
pterm without screen 0.085

xterm with screen 0.287
mlterm with screen 0.272
kterm with screen 0.401
rxvt with screen 0.031
pterm with screen 0.073

#まとめて描画
xterm without screen 0.263
mlterm without screen 0.186
kterm without screen 0.187
rxvt without screen 0.012
pterm without screen 0.078

xterm with screen 0.240
mlterm with screen 0.283
kterm with screen 0.417
rxvt with screen 0.034
pterm with screen 0.074

* rxvtだとやばいほど速い!
* screenを使うと違いがほぼなくなっている。
0138名無しさん@お腹いっぱい。2005/06/07(火) 05:22:08
結局ktermとxtermでjump scrollの設定が違ってたってオチかよ!
0139名無しさん@お腹いっぱい。2005/06/07(火) 08:37:32
screenを使うと勝手にまとめて描画するようになってるみたいだね。
0140名無しさん@お腹いっぱい。2005/06/07(火) 10:31:14
>>137
mltermで0.6秒になってないが。
01411292005/06/07(火) 13:45:47
それは特殊な条件下だったので‥
0142名無しさん@お腹いっぱい。2005/06/07(火) 19:47:36
escape ^a^a
から
escape ^z^z
に、変換したのですが

以前、C-a C-aで行えていた1個前に作業していたスクリーンへの移動ができなくなりました
C-z C-aでは、何もおきなくて
C-z C-zでは、カレントスクリーンのプログラムがスリープしてしまいます

この場合、どのようなキーバインドになっているのでしょうか?
0143名無しさん@お腹いっぱい。2005/06/07(火) 20:19:35
^z:help して other の束縛を見れ。
0144名無しさん@お腹いっぱい。2005/06/07(火) 20:50:14
escape ^zz でいいんじゃないの。
0145名無しさん@お腹いっぱい。2005/06/07(火) 21:03:11
デフォルトは
escape ^aa
0146名無しさん@お腹いっぱい。2005/06/08(水) 01:58:13
>>144
洩れもそう設定してるから、>>142の言う操作は、C-z C-z でできてる。
escape ^z^z の場合は、どうやるんだろね?
0147名無しさん@お腹いっぱい。2005/06/08(水) 03:18:55
オートデタッチに設定しているのですが
デタッチしたら全てのプロセスは生きたままですよね?
そのまま、screen で新しくscreenを起動しても前のscreenはきえません
ですので、前のscreenを復元してkで1つずつころしていきます
一気に殺すことはできないのでしょうか?
0148名無しさん@お腹いっぱい。2005/06/08(水) 05:28:14
pkill screen
0149名無しさん@お腹いっぱい。2005/06/08(水) 08:25:23
>>146
デフォルト起動したscreenで「^A ?」した時の表示と見比べると
分かるけど、「other」が消えてる。だからその機能は使えなくなる。
0150名無しさん@お腹いっぱい。2005/06/08(水) 08:59:57
>>142
C-z :other RET
0151名無しさん@お腹いっぱい。2005/06/08(水) 19:11:05
>>149
そうなのか。しらなんかったので勉強になった。
やっと>>143の逝ってる意味が理解できたYO。
0152名無しさん@お腹いっぱい。2005/06/09(木) 12:17:40
screenの設定ミスか分かりませんが、分かる方いたら教えて下さい。
スレ違いだったら、誘導お願いします。

zsh+screenで使っているんですが、lsすると、"動画/"とちゃんと表示されるディレクトリが、
lsの後、tabで補完させると" 芦莚"と文字化けしてしまいます。
同時に、補完する時に下に出る一覧だと、"\M-F\M-|\M-K\M-\\M-8\M-l"となってしまいます。
どなたかアドバイス下さい。よろしくお願いします。。。
0153名無しさん@お腹いっぱい。2005/06/09(木) 12:22:54
>>152
それ、screenなしでも同じじゃないの?
0154名無しさん@お腹いっぱい。2005/06/09(木) 14:53:11
Fedora厨
0155名無しさん@お腹いっぱい。2005/06/09(木) 14:57:52
ファイル名に日本語使うなよ‥
0156名無しさん@お腹いっぱい。2005/06/09(木) 14:59:35
日本人が日本で日本語を使って何が悪い
0157名無しさん@お腹いっぱい。2005/06/09(木) 15:28:34
さっと補完できなくなるだろ?あと、encodingの問題。
0158名無しさん@お腹いっぱい。2005/06/09(木) 15:29:05
zsh で setopt printeightbit
0159名無しさん@お腹いっぱい。2005/06/09(木) 22:49:00
>>157
MINIX時代から日本語ファイル名使ってるけど、無問題。
頭に補完用の英数文字付けとけば便利。

00読め.txt
js1dscギレン総帥.log

…てな具合。
0160名無しさん@お腹いっぱい。2005/06/10(金) 02:05:13
ああ、なるほど。これは名案かもしれない。
0161名無しさん@お腹いっぱい。2005/06/10(金) 02:12:18
> 00読め.txt
たまにこういうファイル名はあって、何なんだろうと思ってたんだけど
謎が解けますたんだよもん
0162名無しさん@お腹いっぱい。2005/06/10(金) 03:20:59
msdos時代にそういうファイルがあったね。Linux使ってからはないけど。
0163名無しさん@お腹いっぱい。2005/06/10(金) 04:41:00
「shellの補完で、kogikuが使いたい。」
って、まえに、どこかで話題になってなかった?
#すれ違いスマソ。
0164名無しさん@お腹いっぱい。2005/06/10(金) 07:04:52
>>161
それってlsなんかで先頭に表示されることを期待してるんじゃなかったのか!?
00README.1ST とか。
0165名無しさん@お腹いっぱい。2005/06/10(金) 09:56:43
引越し屋の名前はアで始まるのが異様に多いのと似たようなもんか
01661072005/06/10(金) 23:07:13
>>134
遅くなりましたが、試してみたので報告します。
結論から言うとそれが原因ではないようです。

実験の条件は前と同様、
kterm -geometry 150x61 で
screen は screen -c /dev/null としました。
試験用のコマンドだけ変えて、
time jot -p 100 1000 (jot は FreeBSD 5.4-RELEASE-p1 のものです)
としました。

条件の記述では以下の記号を用いる。
l → echo '\e[?4l'
h → echo '\e[?4h'
Pl → echo '\eP\e[?4l\e\'
Ph → echo '\eP\e[?4h\e\'
(zsh の echo を使っている)
0167107 (実験結果)2005/06/10(金) 23:08:00
なにもしないとき(screen なし)
jot -p 100 1000 0.01s user 0.02s system 7% cpu 0.482 total
なにもしないとき(screen あり)
jot -p 100 1000 0.02s user 0.04s system 0% cpu 12.256 total
l としたとき(screen なし)
jot -p 100 1000 0.00s user 0.04s system 7% cpu 0.523 total
h としたとき(screen なし)
jot -p 100 1000 0.02s user 0.04s system 0% cpu 17.832 total
l として screen の中で l としたとき
jot -p 100 1000 0.05s user 0.01s system 0% cpu 12.451 total
l として screen の中で h としたとき
jot -p 100 1000 0.03s user 0.03s system 0% cpu 12.445 total
h として screen の中で l としたとき
jot -p 100 1000 0.03s user 0.03s system 0% cpu 12.421 total
h として screen の中で h としたとき
jot -p 100 1000 0.04s user 0.02s system 0% cpu 12.396 total
l として screen の中で Pl; l としたとき
jot -p 100 1000 0.02s user 0.04s system 0% cpu 12.474 total
l として screen の中で Pl; h としたとき
jot -p 100 1000 0.02s user 0.05s system 0% cpu 12.350 total
l として screen の中で Ph; l としたとき
jot -p 100 1000 0.04s user 0.02s system 0% cpu 17.846 total
l として screen の中で Ph; h としたとき
jot -p 100 1000 0.01s user 0.05s system 0% cpu 17.826 total
h として screen の中で Pl; l としたとき
jot -p 100 1000 0.03s user 0.03s system 0% cpu 12.424 total
h として screen の中で Pl; h としたとき
jot -p 100 1000 0.00s user 0.06s system 0% cpu 12.358 total
h として screen の中で Ph; l としたとき
jot -p 100 1000 0.02s user 0.04s system 0% cpu 17.843 total
h として screen の中で Ph; h としたとき
jot -p 100 1000 0.03s user 0.03s system 0% cpu 17.845 total
01681072005/06/10(金) 23:09:28
まとめると、kterm が h のときは 17s いって、kterm が l のときは
screen ありで 12s、screen なしで 0.5s ってところです。
で、なにも(echo foo を)しないときは kterm は l のようで、
問題の原因は >>134 のそれではないようです。
というか、上の方で 1行ずつ描画してるのが問題とか書きましたが、
調べたところ全部 1行ずつというわけではなく、2行ずつだったりも
するようです。

情報 thx.
長文失礼。
0169名無しさん@お腹いっぱい。2005/06/11(土) 11:08:26
>>163 zsh スレ?
0170名無しさん@お腹いっぱい。2005/06/11(土) 17:59:01
screenを一気に終了させるにはどうするのでしょうか?
デタッチはoffにできません
screenが1つだけならkillでころすのですが、複数個起動していたら
どれがどのプロセスなのかわからなくなってしまいます

今は複数個、screenを起動している場合殺したいscreenで
全て一つずつ、Kで殺していっています
これだと、大分手間がかかるので
一気に殺せる方法があれば教えていただきたいです
0171名無しさん@お腹いっぱい。2005/06/11(土) 18:03:53
>>170
殺したいscreenにattachして
C-a :quit
0172名無しさん@お腹いっぱい。2005/06/11(土) 18:07:50
>>171
ありがとうございます
:q
:exit
などはやってみたのですが
なぜか、:quitはやってませんでした・・・
本当にすいませんでしたありがとうございました
0173名無しさん@お腹いっぱい。2005/06/11(土) 18:10:38
screenって起動したら
root 103 2.1 0.4 804 1388 ?? Ss Fri04PM 0:13.35 SCREEN (screen-4.0.2)
user 102 0.0 0.2 548 840 p0 S+ Fri04PM 0:00.34 screen (screen-4.0.2)
って、なんでrootが出てくんだ?
0174名無しさん@お腹いっぱい。2005/06/11(土) 18:42:23
>>173
set sidしているのと関係あるのかな?
自分以外のユーザがアタッチするときにroot権が必要
0175名無しさん@お腹いっぱい。2005/06/12(日) 13:07:05
>>173-174
俺はいつもconfigureに--disable-socket-dirをつけてる。
なんでデフォルトでsetuidなんだろうな。
01761742005/06/12(日) 13:12:07
setsidではなくて、setuidでしたね。orz
0177名無しさん@お腹いっぱい。2005/06/21(火) 23:32:32
screen起動時に1つのscreenをrootにさせたいんだけど何かいい方法ないかな?
個人で使ってるしサーバとかにもしてないから、設定ファイルにrootのパス書くことは
全然問題ないんだけど何かいい方法あります?

suのマニュアル読んでみたけどオプションの引数にパスワード書いてrootになる方法はなさげだし

何かいい方法があったら教えてほしいです
よろしくおねがいします
0178名無しさん@お腹いっぱい。2005/06/21(火) 23:49:35
sudo suとか
ssh root@localhostとか
0179名無しさん@お腹いっぱい。2005/06/22(水) 01:02:08
stuff でパスワード送るとか。
0180名無しさん@お腹いっぱい。2005/06/23(木) 22:08:34
expectを使えばいいのかな
0181名無しさん@お腹いっぱい。2005/06/24(金) 00:23:20
>>177
|個人で使ってるしサーバとかにもしてないから
じゃあrootパスワードを空にすれば?
0182名無しさん@お腹いっぱい。2005/06/24(金) 03:28:50
おまえOS何使ってんの?
いまどきnullにできるUNIXなんてあるんだ
落ちたもんだな
0183名無しさん@お腹いっぱい。2005/06/24(金) 04:16:25
バカ?
0184名無しさん@お腹いっぱい。2005/06/24(金) 11:20:11
screen + rdic + zsh + w3m での辞書検索でw3m上でキーボードでの
カーソル移動操作にhookしてscreenのbindキーなくして辞書検索するように
したいのですがどのようにすれば出来るでしょうか?
SSH_TTY=/dev/pts/1をcatだったかしてキー入力を検出出来たような
気がするのですが他にいい方法はあるでしょうか?
zshで出来るのかなとも思うのですがだれかわかる人
教えて下さい。
0185名無しさん@お腹いっぱい。2005/06/24(金) 11:48:46
>>184
いまいち何がしたいのかよくわからんから、詳しく書いて
01861842005/06/24(金) 13:20:45
>>185
windows2000 + puttyが抜けていました。
現在rdicで検索する場合C-a C-w のように2回キーを押して
検索用スクリプトを起動するようにしています。
これを2回キー入力するのは面倒なので1回のキー入力で
検索用スクリプトを起動させるようにしたいのです。
ですので、キー入力一回事にスクリプトを起動させる方法が
しりたいのです。
よろしくお願いします。
0187名無しさん@お腹いっぱい。2005/06/24(金) 13:29:32
なんとなく >>177 は別の横着方法 (というか sudo) を覚えた方が良い気がする。
0188名無しさん@お腹いっぱい。2005/06/24(金) 13:41:18
>>186
screenのbindkey使えば?
01891842005/06/24(金) 17:47:51
>>188
bindkeyで一文字だけで割り当てられるとは知りませんでした。
ありがとうございます。

w3m デフォルトキーマップのwに辞書検索を割り当てて
.screenrc
bindkey w exec $HOME/bin/split.sh --search
w押下->辞書検索->次の単語に移動という動作にしたいのですが
うまくいきません。
bindkey に w を割り当てていて入力できないので

w3m keymapに
keymap  x   NEXT_WORD
としてxで次の単語移動の動作をつけて

split.shに
辞書検索スクリプト実行後
screen -X eval 'at work stuff x'

としたのですがw3mのカーソル位置にxが書き込まれて期待した
動作が得られませんでした。

そこで考えてscreenの他のウインドウ経由で実行するようにしたらたまに成功するようになりましたが
確実に成功させることはできませんでした。
screen -X eval 'at tmp stuff "screen -X eval \"at work msgwait 0\" \"at work stuff x\"^M"'

なぜかスクリプト経由のscreen -X eval 'at work stuff x'だとうまくいかず
他のウインドウから直接screen -X eval 'at work stuff x'した場合はすべてうまくいきました。
なにかよい解決方法はあるでしょうか?
01901842005/06/24(金) 18:10:57
>>189
修正
screen上の他のウインドウからスクリプトを直に実行した場合も
100%成功する

screen上でbindkey経由で起動されるスクリプトで実行がうまくいかない。
0191名無しさん@お腹いっぱい。2005/06/24(金) 18:17:10
>>184が望むことをscreen+zshで実現するのは無理とは言わないが無茶だろ

> なにかよい解決方法はあるでしょうか?
emacs使ってelisp書くか、自分でshellを書け
その方がスマートかつ短時間で解決できそう
0192名無しさん@お腹いっぱい。2005/06/24(金) 18:22:41
>>189
>bindkey w exec $HOME/bin/split.sh --search
bindkeyにwとか割当てると悲惨になるので、^[wとか割当てた方がよい。

>w押下->辞書検索->次の単語に移動という動作にしたいのですが
>うまくいきません。
どのようにうまくいかない?

>としたのですがw3mのカーソル位置にxが書き込まれて期待した
>動作が得られませんでした。
>
>そこで考えてscreenの他のウインドウ経由で実行するようにしたらたまに成功するようになりましたが
これは俺もはまった。execのfdpatが絡んできて結構複雑。
exec ! $HOME/bin/split.sh --search
にすればok
0193名無しさん@お腹いっぱい。2005/06/25(土) 12:17:10
>>191
emacsいいなーとはおもいますが
キーバインド覚えるのがたいへんで
vim使いつづけてますよ。

>>192
>bindkeyにwとか割当てると悲惨になるので、^[wとか割当てた方がよい。
2回キー入力はめんどうなのでにしました。

>どのようにうまくいかない?
>これは俺もはまった。execのfdpatが絡んできて結構複雑。
>exec ! $HOME/bin/split.sh --search
>にすればok
Hello World
H の部分で検索した場合
xello World
上記のようにw3mの画面にstuffで入力したキーが書き込まれる
時がありました。
exec !にしたらうまくいきました。
ありがとうございます。

ttp://www.dekaino.net/screen/screen-thread2.txt
[302] [303] [306] [307] [308] [309] [310]
に似たようなことが書いてあったので他の人のために貼
01941922005/06/25(土) 13:30:52
>>193
>>bindkeyにwとか割当てると悲惨になるので、^[wとか割当てた方がよい。
>2回キー入力はめんどうなのでにしました。
^[wはalt-wだぞ

>ttp://www.dekaino.net/screen/screen-thread2.txt
>[302] [303] [306] [307] [308] [309] [310]
>に似たようなことが書いてあったので他の人のために貼
これ、俺です。
0195名無しさん@お腹いっぱい。2005/06/25(土) 13:36:54
>>193
便利なスクリプトができたら是非公開してくれ。
01961812005/06/25(土) 23:27:54
>>182 脊髄反射する前にpasswd(5)でも読んだら?
01971772005/06/28(火) 02:36:12
具体的に
パスワードがhogeとして例を書いてくれないですかね?
0198名無しさん@お腹いっぱい。2005/06/28(火) 07:27:14
ちょっとは自分の頭で考えたら?
01991772005/06/28(火) 09:07:28
いやです
0200200!2005/06/28(火) 09:43:24
>>199
だからパスワードなしにしろって。
02011772005/06/28(火) 09:45:15
無理です
考えて下さい
0202名無しさん@お腹いっぱい。2005/06/28(火) 09:50:10
だからさ、expect使ったら?
02031772005/06/28(火) 10:03:28
パスワードをhogeとして
.screenrcに書いたらいいことをそのまま教えて下さい
0204名無しさん@お腹いっぱい。2005/06/28(火) 10:27:42
>>177
スレ違い.ここまで読んで .screenrc で解決しようとする時点で君には無理.
0205名無しさん@お腹いっぱい。2005/06/28(火) 10:44:50
いい加減こいつの相手するのやめれよ。自演か?
02061772005/06/28(火) 10:52:19
わたしには無理なのはわかりました
ですので、あなたたちが考えて下さい
0207名無しさん@お腹いっぱい。2005/06/28(火) 12:15:57
ネタは引き際が肝心ですよ。
02081772005/06/28(火) 13:48:46
本気ですよ?
自分でわかれば聞きません
0209名無しさん@お腹いっぱい。2005/06/29(水) 06:19:08
つまらんネタだ
02101772005/06/29(水) 11:48:23
ネタネタと言うんなら答えを示してください
では、だまります
0211名無しさん@お腹いっぱい。2005/06/29(水) 12:39:47
教えて君に用はない
02121772005/06/29(水) 12:51:45
私も>>211さんにはようはありません
0213名無しさん@お腹いっぱい。2005/06/29(水) 13:21:45
とりあえず 177 は >>178 を試してから物を言え。
0214名無しさん@お腹いっぱい。2005/06/29(水) 13:39:45
粘着してるな、相変わらず。
0215名無しさん@お腹いっぱい。2005/06/29(水) 23:47:45
>>210 どれか一つのscreenでrootになっておいて、決してexitしなければよいよ。
さ、オナニーしてとっとと寝ろ。
0216名無しさん@お腹いっぱい。2005/07/02(土) 18:31:54
screen -X 等で使われるのメッセージバッファの大きさが大きすぎ
て(MAXPATHLEN * 3 以上)、FIFOに対してアトミックに読み書きで
きる大きさ(PIPE_BUF)を越えているので、連続してscreen -Xを使
うと、
Invalid message (magic 0x00000000).
と出て動かないことがあった。

os.h で MAXPATHLEN を 1024 で定義しなおして、コンパイルした
らこの現象は起きなくなった。
0217名無しさん@お腹いっぱい。2005/07/02(土) 20:47:04
そう言うことはそういうMLにでも投げるとかしたらどーか。
いやそんなMLがあるかどうか知らんけど。
0218名無しさん@お腹いっぱい。2005/07/02(土) 21:24:28
Linuxのfifoの実装はださいよねえ
でもscreen様がわざわざlinuxごときにあわせてやる必要もないだろ
0219名無しさん@お腹いっぱい。2005/07/03(日) 02:26:41
だったらてめーがコード書けよ
0220名無しさん@お腹いっぱい。2005/07/03(日) 02:28:06
linux嫌いだからイヤだよ。
0221Linux2005/07/03(日) 06:10:51
あっそ、おれもおまえなんか大きらいだ。
0222名無しさん@お腹いっぱい。2005/07/04(月) 11:02:59
作業記録のためにウィンドウの切り換えログを取りたいんですがいい方法ありませんか?
0223名無しさん@お腹いっぱい。2005/07/04(月) 11:17:24
>>222
ttyrec
切り替えコマンドをスクリプトに割当てて、その中で記録
02242222005/07/04(月) 12:21:07
>>223
ども.ttyrec はやりすぎかなと.切り替えコマンド使うと next/prev/select
とか全部定義し直さないと駄目ですよね?

シェル側でやろうかとも思ったのですが,新規の時はともかく切り替えはキャッ
チできないし... なんかうまい方法ないっすかね.
0225名無しさん@お腹いっぱい。2005/07/04(月) 12:45:41
難しいならば別な角度から攻撃しよう
0226名無しさん@お腹いっぱい。2005/07/04(月) 13:41:17
>>218
美しさにこだわって、いつまでたっても実用に耐えない OS よりナンボかマシ。
02272222005/07/04(月) 13:44:30
backtick にタイムスタンプと $WINDOW を吐くスクリプトを仕込んでみたら、
$WINDOW が空に... echo とか exec (backtick も) って %n とか効かないです
よね... うーん,あと一息な気が.手動で exec すれば動くんだけどな.

■ このスレッドは過去ログ倉庫に格納されています