GNU screen その5
■ このスレッドは過去ログ倉庫に格納されています
0001ミスタースクリーン
2006/05/27(土) 18:18:42GNU本家 http://www.gnu.org/software/screen/
公式ML(英語 たまにドイツ語) http://groups.yahoo.com/group/gnu-screen/
でかいのネット http://www.dekaino.net/screen/
UnixUser2004年1月号記事 http://risky-safety.org/%7Ezinnia/screen/contribute2/
Screen Glossary http://zinnia.dyndns.org/~hiki/Screen/
@IT:screenコマンドとは http://www.atmarkit.co.jp/flinux/rensai/linuxtips/692usescreen.html
私家版GNU Screen http://www.rubyist.net/~rubikitch/computer/hacks/screen/
screenコマンド一覧 http://www.limy.org/program/screen.html
1 http://pc.2ch.net/test/read.cgi/unix/1001966406/
2 http://pc5.2ch.net/test/read.cgi/unix/1048030339/
3 http://pc5.2ch.net/test/read.cgi/unix/1087436430/
4 http://pc8.2ch.net/test/read.cgi/unix/1111357444/
0035名無しさん@お腹いっぱい。
2006/06/04(日) 00:31:40俺はてっきりDOSのコマンドプロンプトかと・・・
0036名無しさん@お腹いっぱい。
2006/06/04(日) 02:15:08てっきり通じると思ってジョークで書いたんだけど通じないならごめん。
0037名無しさん@お腹いっぱい。
2006/06/04(日) 19:16:58次はエスパーが集うスレでやってくれ 頼む
0038名無しさん@お腹いっぱい。
2006/06/04(日) 20:58:370039名無しさん@お腹いっぱい。
2006/06/04(日) 23:32:590040名無しさん@お腹いっぱい。
2006/06/05(月) 00:20:59#
じゃなかったっけ?
0041名無しさん@お腹いっぱい。
2006/06/05(月) 00:56:150042名無しさん@お腹いっぱい。
2006/06/05(月) 04:20:280043名無しさん@お腹いっぱい。
2006/06/09(金) 22:17:560044名無しさん@お腹いっぱい。
2006/06/29(木) 18:13:050045名無しさん@お腹いっぱい。
2006/06/29(木) 19:48:33shutdown -r now
0046名無しさん@お腹いっぱい。
2006/06/29(木) 19:51:24Xだけでいいんじゃまいか?
0047名無しさん@お腹いっぱい。
2006/06/29(木) 21:28:470048名無しさん@お腹いっぱい。
2006/06/29(木) 23:44:590049名無しさん@お腹いっぱい。
2006/06/29(木) 23:51:580050名無しさん@お腹いっぱい。
2006/06/30(金) 00:08:240051名無しさん@お腹いっぱい。
2006/06/30(金) 11:38:290052名無しさん@お腹いっぱい。
2006/06/30(金) 14:12:52パッチできたら、おれにも分けてください。
0053名無しさん@お腹いっぱい。
2006/07/06(木) 00:46:48受け取ることは出来ますか?
PuTTYからemacsやw3mを使っていて、コンソールでもマウスという環境に
慣れてしまっています。screenからマウスを利用できれば普段から利用
できるのですが…
0054名無しさん@お腹いっぱい。
2006/07/06(木) 01:00:53005553
2006/07/06(木) 01:29:29レスありがとうございます。環境を書き忘れましたがLinux 2.4系で
screenのバージョンは3.09.09 (FAU) 25-May-01です。
最新のバージョンに上げれば何もせずにマウスが使えるようになる
のか、それともscreenrcの設定が必要なのか、もし情報がありまし
たら教えてください。
0056名無しさん@お腹いっぱい。
2006/07/06(木) 01:33:50http://www.bookshelf.jp/2ch/unix/1047038317.html
ここの231を参照
005753
2006/07/06(木) 06:16:41ありがとうございます。screenrcに
termcapinfo xterm XT
を入れれば良かったのですね。ヘルプにもちゃんと
XT (bool) Terminal understands special xterm sequences
(OSC, mouse tracking).
書いてあったのに、見つけられずお恥ずかしいです。w3mでの考慮点も
よく分かりました。
恥かきついでにもう一つ質問させてください。
screenを特定の画面サイズで利用するにはどうすればよいでしょうか?
具体的には、99桁×30行というサイズで利用したいので、screenrcに
下記の設定を入れました。
termcapinfo xterm 'WS=\033[8;%d;%dt'
width 99 30
この設定で新規起動時にはちゃんと99桁×30行になってくれるのですが、
デタッチした後アタッチすると80桁×30行になってしまいます。
あるいは、ターミナルソフトの側でサイズを設定しておき、screenの
起動時に現在のサイズに追従するという動きでも構いません。
こちらの方法も-Aオプションを試したのですが上手く動きませんでした。
教えてちゃんで恐縮ですが、ご存知でしたらよろしくお願い申し上げます。
0058名無しさん@お腹いっぱい。
2006/07/06(木) 08:33:160059名無しさん@お腹いっぱい。
2006/07/09(日) 18:56:33termcapinfo xterm 'li#30:co#99'
0060名無しさん@お腹いっぱい。
2006/07/10(月) 15:11:54お前らどう管理してるんだ?
0061名無しさん@お腹いっぱい。
2006/07/10(月) 15:21:37screenあげるHubホストを数台決めておいて、リモートホストはそこからsshしている。
0062名無しさん@お腹いっぱい。
2006/07/10(月) 18:09:340063名無しさん@お腹いっぱい。
2006/07/10(月) 22:51:46するくらいだったら
screen -r
するでそ
0064名無しさん@お腹いっぱい。
2006/07/11(火) 01:35:45数ヶ月放置したカビの生えたセッションが残りそうだ。
0065名無しさん@お腹いっぱい。
2006/07/11(火) 03:27:000066名無しさん@お腹いっぱい。
2006/07/11(火) 11:53:21screen -ls | grep '(Detached)$'
入れてる。
0067名無しさん@お腹いっぱい。
2006/07/13(木) 10:39:170068名無しさん@お腹いっぱい。
2006/07/13(木) 11:31:18utmpとかいじるからな。xtermとかもだろ?
suid無くてもdefloginまわりが効かなくなるだけだから、
気になるなら外しても大丈夫よ。
0069名無しさん@お腹いっぱい。
2006/07/14(金) 22:47:580070名無しさん@お腹いっぱい。
2006/07/15(土) 14:54:090071名無しさん@お腹いっぱい。
2006/07/16(日) 00:11:510072名無しさん@お腹いっぱい。
2006/07/16(日) 01:13:25multiuser on
acladd user-a
user-b の shell から
screen -r user-a/foobar
とすれば user-b は user-a の screen の foobar セッションを attach できる。
0073名無しさん@お腹いっぱい。
2006/07/16(日) 12:41:24ペアプログラミングとかで使えるかも
0074名無しさん@お腹いっぱい。
2006/07/16(日) 14:35:27:set mouse=a
:set ttymouse=xterm
でマウスが使えるようになるんですが、
kterm+screen上でvimを実行するとこれでは駄目なようです。
vimのドキュメントによると以下の通りなんですが、
screen がなにかコードを変換してしまってるんでしょうか?
xterm xterm-like mouse handling. The mouse generates
"<Esc>[Mscr", where "scr" is three bytes:
"s" = button state
"c" = column plus 33
"r" = row plus 33
0075名無しさん@お腹いっぱい。
2006/07/16(日) 14:38:44ヒント >>53
0076名無しさん@お腹いっぱい。
2006/07/16(日) 23:07:55termcapinfo kterm XT
でいけました。ありがとうございます。
0077名無しさん@お腹いっぱい。
2006/08/10(木) 16:45:17原因と対処方法をご存知でしたら教えてください。
今はいったんexitしてから、新しいウィンドウを作成しなおすという対処療法でしのいでいます。
環境はLinux2.6とMacOS X 10.4です。
0078名無しさん@お腹いっぱい。
2006/08/11(金) 06:58:27このスレにエスパーはいない
せめて以下についてはっきりしてなきゃ何も助言できないよ
・障害の内容をもっと具体的に説明してくれ
* 再現性はあるのか?
* どのようなキー操作でどのような結果になるのか?
* ~/.screenrcの内容は?
* exitするとは具体的に何を意味しているのか?
・screenのバージョンは?
・linux2.6のディストロとバージョンは何? kernelだけじゃ何もわからん
・端末(エミュレータ)は何を使っているのか?
0079名無しさん@お腹いっぱい。
2006/08/12(土) 21:49:250080名無しさん@お腹いっぱい。
2006/08/13(日) 22:09:28時々複数のウィンドウを使っているとそうなります
Numlockと書かれたキーを触るとそういう現象がおきやすいです
~/.screenrcというのはよく分からないですが
ファイルまたはディレクトリはありませんと言われます
exitというのは電源ボタンを長押しすることです
screenのバージョンはCVSのHEADです
linuxはヴァインをつかっています
エミュレータはパラレルスを使っています
エスパーさんよろしくおねがいします
0081名無しさん@お腹いっぱい。
2006/08/13(日) 22:16:580082名無しさん@お腹いっぱい。
2006/08/14(月) 08:20:52パラレルスって仮想マシンエミュレータだろ
必要な情報は*端末エミュレータ*は何なのかってことだ
Vineのversionもな
俺はエスパーじゃないけど、問題はscreenにあるんじゃなくて
>>77の能力不足にあるくらいわかるぞ
0083名無しさん@お腹いっぱい。
2006/08/15(火) 06:44:460084名無しさん@お腹いっぱい。
2006/08/15(火) 08:46:110085名無しさん@お腹いっぱい。
2006/08/15(火) 11:23:240086名無しさん@お腹いっぱい。
2006/08/18(金) 23:27:39編集の終了と共に元の画面に復帰するスクリプトを書いてます。
おおまかには
- screen/emacs未起動なら→screen/emacs起動
- screenの中なら→select n; gnuclient file; other
- screenの外なら→screen -x -p n; gnuclient file; screen -X detach
という動作なんですが、emacs/gnuservやscreenの起動待ちやら
attach+gnuclient+detachのタイミング制御でsleepが細かく
入ったりして、いまいち完成度が高くありません。
シェルスクリプト相談室行こうかとも思ったんですが、screenに
かなり特化した改良が必要と思うので、ここに問題のスクリプト
貼り付けて相談してもよいですか?
0087名無しさん@お腹いっぱい。
2006/08/18(金) 23:29:330088名無しさん@お腹いっぱい。
2006/08/19(土) 13:49:11答えが得られるかはわからんけどみな興味はあるんじゃないかな?
0089名無しさん@お腹いっぱい。
2006/08/19(土) 14:01:350090名無しさん@お腹いっぱい。
2006/08/19(土) 18:58:44009186
2006/08/19(土) 19:52:08エラーがでるので分割します):
#!/bin/sh
exec > /dev/null 2>&1
# check if gnuserv/emacs is already available
if ! gnuclient -batch -eval t; then
# invoke emacs in screen
if [ -n "$STY" ]; then
# already in screen - simply invoke emacs
screen -X screen 9 emacs
else
# check running screen or invoke one
screen -X exec true || screen -d -m
# wait for screen to accept request
while ! screen -X exec true; do sleep 0.25; done
# invoke emacs, with wrapping attach/detach action to
# workaround a bug(?) that ignores "-p 9" in detached mode
#
# comment this out if you invoke emacs in .screenrc
(sleep 0.25; screen -X screen 9 emacs; screen -X detach) & screen -x
fi
# wait for gnuserv/emacs to accept request
while ! gnuclient -batch -eval t; do sleep 0.25; done
fi
009286
2006/08/19(土) 19:59:48if [ -n "$STY" ]; then
screen -X select 9 & gnuclient "$@"; screen -X other
else
(sleep 0.25; screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
fi
で、悩んでいるポイントは
・emacs未起動時にscreen外部から指定window内でemacs起動するのが綺麗にできない
・最後の編集画面へのジャンプで、screen外部からemacsセッションにattachしつつ
gnuclientを実行する所の両立が綺麗にできない
・screenの起動完了をビジーループでしかチェックできていない
・emacsの起動完了をビジーループでしかチェックできていない
の4点です。これらを対処するためにフォアグラウンドと
バックグラウンドで並行して処理させたりしているのですが、
いずれもsleepが入ってしまい、妙なウェイトが入ったり
タイミングがずれて処理失敗するなど、いまいちな状態です。
009386
2006/08/19(土) 20:11:29誤魔化しているのですが、
(sleep 0.25; screen -X screen 9 emacs; screen -X detach) & screen -x
(sleep 0.25; screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
を特に何とかできないかと考えてます。
いずれも (...) の部分の実行が attach 後の実行でなくては問題が
あるためアドホックに sleep していますが、結局それでも間に合わずに
失敗したり、変にもたついたりと散々です。
0094名無しさん@お腹いっぱい。
2006/08/25(金) 16:42:460095名無しさん@お腹いっぱい。
2006/08/30(水) 14:37:23シェルのカレントディレクトリを、現在のカレントディレクトリと
同じにすることってできますか?
0096名無しさん@お腹いっぱい。
2006/08/30(水) 15:16:53無理。screenは子プログラムのカレントディレクトリは関知しないし、できない。
そのシェルから screen $SHELL とするのはダメなの?
0097名無しさん@お腹いっぱい。
2006/08/30(水) 15:59:11ありがとうございます。
>そのシェルから screen $SHELL とするのはダメなの?
スクリプト中で使うのでなく、普段C-a cするときの動作が
そうだったら便利なのにという事なので。
0098名無しさん@お腹いっぱい。
2006/08/30(水) 16:14:38それなら、
alias cd 'chdir \!*; screen -X chdir $PWD'
とでもしておけば最後にcdした所が有効にはなるけど。
ただし、あくまでそのscreenの中で「最後にcd (screen -X chdir $PWD) した場所」であって、
現在のwindow中のプロセスのカレントディレクトリは知りようがないな。
009986
2006/08/30(水) 21:12:22割り当てておいて、その中で新窓作成+位置移動するような処理を
書いておくってのはどう?
010086
2006/08/30(水) 21:25:17ちょっと意図がわからないけど、
(gnuclient "$@"; screen -X detach) & screen -x -p 9
とウェイトなし&gnuclient用ttyの確保処理を省略するための案と
いうことであってる?
で、結果だけど、だめだった。
実は nohup とかもやっていて、それもダメだったので、gnuclient の
起動のためだけに screen を使わざるを得ないのかなと諦め気味。
で、ここの問題は論理的には
# attach しながら裏で gnuclient 経由編集開始して、終了後に detach
(gnuclient "$@"; screen -X detach) & screen -x -p 9
と書きたいのだけど、gnuclient に tty 渡さないといけないから
(screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
こうなって、でもって screen -x -p 9 の要求が gnuclient 用 screen に
行ってしまうといけないので、
(sleep 0.25; screen -D -m -c /dev/null gnuclient "$@"; screen -X detach) & screen -x -p 9
と screen+gnuclient の実行が screen -x -p 9 の後になるように調整して、
既存の screen セッションのほうに attach するようにしてる。
と、こんな具合にドミノ式に sleep が入ってくることになってしまい、
別の観点からの解決法はないものかと悩み中。screen -x -p 9 を
バックグラウンドに回す訳には行かないし、どうしたものか。
0101フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/05(火) 22:07:540102名無しさん@お腹いっぱい。
2006/09/05(火) 22:14:41010386
2006/09/05(火) 22:42:14やっぱりツッコまれますか。そこ確かに完成度低いんですよね。
番号じゃなくウィンドウ名にしたいとは思っているのですが、
名前を振るだけだと番号が頭から振られてしまい、通常の
自分の利用範囲とかぶって逆に使いにくいので、まず動作を
詰めてからということでスルーしてます。
0104フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/06(水) 17:37:25それより、うまくいったのか?
0105名無しさん@お腹いっぱい。
2006/09/06(水) 19:50:04日頃よっぽど無視されてる人間なのか?
0106名無しさん@お腹いっぱい。
2006/09/06(水) 21:46:06これ、どっかで見たような気がしたんだけど、既出?
0107名無しさん@お腹いっぱい。
2006/09/07(木) 07:54:12このスレでは既出ではない
0108名無しさん@お腹いっぱい。
2006/09/07(木) 17:51:26誰か連絡してやれってば
010986
2006/09/07(木) 21:51:18改良という意味なら、80%位は解決できたよ。gnuclient用ttyを
screenで確保するから干渉するのであって、forkpty(3)で自前で
確保する別のスクリプト組んで、組み合わせて解決した。
今は最後の部分は
if [ -n "$STY" ]; then
(forkpty gnuclient "$@"; screen -X other ) & screen -X select 9
else
(forkpty gnuclient "$@"; screen -X detach) & screen -x -p 9
fi
とsleepフリーになって快適。forkptyは
pid = forkpty(&amaster, NULL, NULL, NULL);
if (pid > 0) { waitpid(pid, &status, 0); return status; }
execvp(...);
なtccスクリプト。
残っているのは新規のscreen+emacs起動の際の、screen -dm した
新セッションにどうやって外部からemacs起動させるかと、それぞれの
起動完了待ちのsleepループだけど、前者は.screenrcでemacs起動する
ようにして回避したので、残るはsleep待ちのコードが一箇所だけ、
それも初回起動の所だけになるまで単純化できた。
0110フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/07(木) 22:42:46emacs -nwにこだわらないでXのEmacsを使ったほうがいいと思うぜ。
Emacs上へのpasteはwritebufとinsert-file使えばできる。
もちろん、スクリプトでfocusを切り換えられるウィンドウマネージャーを使おう。
0111名無しさん@お腹いっぱい。
2006/09/08(金) 03:39:410112フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw
2006/09/08(金) 06:59:320113名無しさん@お腹いっぱい。
2006/09/08(金) 09:02:470114名無しさん@お腹いっぱい。
2006/09/08(金) 14:12:31011586
2006/09/08(金) 20:46:55常にTeraTerm/Putty越しにしか使わないんだ。
ていうか、Xとかリモートデスクトップ使ったらscreenの
メリットが半減してしまうのでは。TeXmacs(+Maxima)使えないのだけが
唯一残念ではあるけど。
0116名無しさん@お腹いっぱい。
2006/09/11(月) 21:37:05http://opentechpress.jp/developer/06/09/11/088249.shtml
0117名無しさん@お腹いっぱい。
2006/09/12(火) 08:00:520118名無しさん@お腹いっぱい。
2006/09/12(火) 08:28:41これはLinux.comの翻訳記事です。
0119名無しさん@お腹いっぱい。
2006/09/12(火) 09:35:42うん、わかってるって。だから「元記事」執筆者て書いた。
翻訳者や>116の調査能力をあげつらっている訳ではない。
0120名無しさん@お腹いっぱい。
2006/09/12(火) 21:37:52otsune乙
0121名無しさん@お腹いっぱい。
2006/09/13(水) 04:53:04定番は^[, ^t, ^zあたりだろうけど.
0122名無しさん@お腹いっぱい。
2006/09/13(水) 08:25:22^[ にしたら vi使えないじゃん。
0123名無しさん@お腹いっぱい。
2006/09/13(水) 09:20:34^[ よりは ^] の方が扱いやすいと思うがね
0124名無しさん@お腹いっぱい。
2006/09/13(水) 10:58:37俺はどれでもないなあ。俺と同じエスケープ使ってるという人見たことない。
0125名無しさん@お腹いっぱい。
2006/09/13(水) 11:04:30片手で使えるから^zだな。
a, tはemacs, [, ]はtelnetあたりと個人的に相性が悪い。
0126名無しさん@お腹いっぱい。
2006/09/13(水) 11:05:04じゃあ何を使ってる?
ってかこのネタになるとスレが伸びるなあ
おれの知合いには ^x がいる。
0127名無しさん@お腹いっぱい。
2006/09/13(水) 11:46:39いって、どう考えても使わなさそうなのがこれだったから。
0128名無しさん@お腹いっぱい。
2006/09/13(水) 12:37:13emacsやシェルで使いまくると思うんだが、人によるのかな。
おれも ^t だけど、どうせ emacs で C-t なんてほとんど使わないからこれでいいと思ってる。
0129名無しさん@お腹いっぱい。
2006/09/13(水) 12:38:14bash: a b c d e f h i j k l m n p r s t u v w y z
emacs: a b c d e f g h i j k l m n p q r s t v w x y - \
telnet: ]
とかがダメ?
もっとも t (transpose-chars) なんて typo 修正用だけど
使うこと少ないから ^t とか選択する人は結構いそう。自分は
両手で打ちたいので ^o にしてる。まだ干渉したことはないけど、
^o ってどこかで使ってたりするのかな。
結局 o t [ あたりが選択肢として残るだけかな・・・
0130名無しさん@お腹いっぱい。
2006/09/13(水) 12:41:43kinput2+Cannaのin/outとかEmacsではopen-lineだかとぶつかる。
0131名無しさん@お腹いっぱい。
2006/09/13(水) 13:19:14システム管理用共有ユーザ (ほとんどの設定がデフォルトのまま) を使う機会が多くて、
そこは screen も ^a のままなので、慣れるために自分の環境も ^a に変えた。
ペアプロしてるひとってエスケープのキーはどうしてるんだろう?
0132名無しさん@お腹いっぱい。
2006/09/13(水) 13:32:03screen使ったペアプロってあるのか。
^aはEmacsキーバインド使ってると弩腐れな設定だな。
shellすら満足に使えなくなる。
0133131
2006/09/13(水) 14:11:01screen 無しに戻ったときにも無意識に ^aa ってやってしまうことがたまにあるけど。
0134名無しさん@お腹いっぱい。
2006/09/13(水) 14:30:370135名無しさん@お腹いっぱい。
2006/09/13(水) 15:36:34何のことか分からなかったけど、今日RSSみてたらやっとわかった。
誰でもscreen使うような人間なら思うことじゃないかと思うんだが。
■ このスレッドは過去ログ倉庫に格納されています