GNU screen その6(再生)
■ このスレッドは過去ログ倉庫に格納されています
0001ギレン総帥 ◆0QHV7fcZ.2
2009/07/11(土) 21:43:29GNU本家 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/
5 http://pc12.2ch.net/test/read.cgi/unix/1148721522/
6(即死) http://pc12.2ch.net/test/read.cgi/unix/1245767502/
0151名無しさん@お腹いっぱい。
2009/11/10(火) 12:32:44すくなくともPS1はプロンプトの形式を指定するための環境変数なので関係ないかと。
0152名無しさん@お腹いっぱい。
2009/11/10(火) 12:38:42> screenのウィンドウ名を実行中のコマンド名にする
とは関係ないように読めるんだけどなぁ。俺の読み間違いかな。
0153名無しさん@お腹いっぱい。
2009/11/10(火) 12:39:46前半だけしか読んでなかった俺のばかorz
0154名無しさん@お腹いっぱい。
2009/11/24(火) 04:33:20captionやhardstatusで横方向の帯はなんとでもなるのに
縦は~/.Xdefaultsのurxvt.foregroundの色と強制的に同じにってのがなんか歯がゆい。
0155名無しさん@お腹いっぱい。
2009/11/24(火) 05:22:200156名無しさん@お腹いっぱい。
2009/11/24(火) 14:44:410157名無しさん@お腹いっぱい。
2009/11/24(火) 14:54:460158名無しさん@お腹いっぱい。
2009/11/24(火) 15:24:41下はgnome-terminalとxterm、どちらでも。zshで
repeat $((COLUMNS - 5)) echo -n ' '; echo あいうえお
とか。これでうの途中に行端がくるのだが、あいまで表示されて
次の行がすぐプロンプトになる。うえおはどこかへ消えてしまう。
0159名無しさん@お腹いっぱい。
2009/11/24(火) 20:42:410160名無しさん@お腹いっぱい。
2009/11/24(火) 22:06:09ちょっとソースを眺めてみたけど、screen_write_cell の中の
/*
* If this is a wide character and there is no room on the screen, for
* the entire character, don't print it.
*/
ってとこにひっかかってるような。
試しにその処理をコメントアウトしたらちゃんと表示された。(副作用は知らない)
0161名無しさん@お腹いっぱい。
2009/11/24(火) 22:17:15だけどscreenだとxtermなんかでもちゃんと表示されるしなあ。
0162名無しさん@お腹いっぱい。
2009/11/24(火) 22:26:410163160
2009/11/25(水) 00:12:56動作しているんだよなあ。
まあ、BTS につっこんでみてもいいんじゃない?
ttp://sourceforge.net/tracker/?func=add&group_id=200378&atid=973262
0164名無しさん@お腹いっぱい。
2009/12/03(木) 16:05:13他の人も連れてウィンドウ間を行き来するにはどうしたらいいですか?
0165名無しさん@お腹いっぱい。
2009/12/10(木) 12:11:100166名無しさん@お腹いっぱい。
2009/12/13(日) 11:15:080167名無しさん@お腹いっぱい。
2009/12/13(日) 20:20:54コマンド実行中はそのコマンドにしてる。
0168名無しさん@お腹いっぱい。
2009/12/14(月) 03:52:140169名無しさん@お腹いっぱい。
2009/12/15(火) 15:51:28やり方教えてけろ
0170名無しさん@お腹いっぱい。
2009/12/15(火) 17:47:280171名無しさん@お腹いっぱい。
2009/12/15(火) 23:46:410172名無しさん@お腹いっぱい。
2009/12/26(土) 22:03:32OS-X向けの解説に出てくる
termcapinfo xterm* ti@:te@
ではうまくいきませんでした。
ターミナルはgnome-terminalを使ってます。
0173 【大吉】
2010/01/01(金) 16:11:010174名無しさん@お腹いっぱい。
2010/01/03(日) 14:15:010175名無しさん@お腹いっぱい。
2010/01/04(月) 01:16:47ほとんど理解で金勝ったわ
0176名無しさん@お腹いっぱい。
2010/01/04(月) 01:19:090177名無しさん@お腹いっぱい。
2010/01/04(月) 21:09:56嗤うほどでもないが、アホちゃうかと
0178名無しさん@お腹いっぱい。
2010/01/04(月) 21:15:45すごく頑張って書いたんだろうけど、痛々しさ以外ほとんど何も伝わらない文章だな
0179名無しさん@お腹いっぱい。
2010/01/04(月) 21:24:590180名無しさん@お腹いっぱい。
2010/01/06(水) 17:16:51こういう宣伝厨大嫌い
0181174
2010/01/06(水) 17:30:000182名無しさん@お腹いっぱい。
2010/01/06(水) 17:32:57いちいち反応すんな
0183名無しさん@お腹いっぱい。
2010/01/06(水) 17:58:160184名無しさん@お腹いっぱい。
2010/01/06(水) 22:43:28ssh(-agent)やX11が使う環境変数を引き回すのに
1. ログイン直後に関係環境変数をファイルにダンプ
2. screen アタッチ
3. 中のwindowでファイルをsourceしたりして取り込み
としてる人は多いと思うんですが、最近
1. PC-A からログインして screen で作業
2. PC-B からもログインして screen で並行作業
3. 作業途中で X11 なアプリを頻繁に上げたり下げたりする
と利用パターンが変わった結果、X11の$DISPLAYをPC-Aからキーを打っている
場合はPC-A側、PC-Bからキーを打っている場合はPC-B側とこまめに切り替えたく
なってます。
つまり従来のファイルダンプ方式だと「どっち側」を向いている設定か
判らないので、ssh-agentでは問題なくてもX11だとdetachしてはscreen -X
setenv DISPLAY=$DISPLAY とかコピペしたりと忙しくて面倒になっています。
そこで質問ですが、これを効率よくする方法はないでしょうか?
自分では見つけられず、やむなく改造してwindow内から親というかattachに
使った端末での環境変数を取れるようにしたのですが、これだけ枯れてる
ソフトをいまさら改造というのも変なので、screenの知らない使い方の
工夫でできるのではないかと。。。
0185名無しさん@お腹いっぱい。
2010/01/07(木) 14:13:35ローカルでも:0.0か:0.1とかあるし
ssh X11 forwardingもあるし
VNCの中から使うこともあるし
けっきょくシェルスクリプトでコマンドランチャを書いて
1. nmap で6000から6020までをポートスキャン
2. 複数候補があるときはプロンプト出してユーザが選択
3. stdinが端末じゃないときは選択できないので最初に見つかったDISPLAYきめうち
みたいなことをやっています。
0186名無しさん@お腹いっぱい。
2010/01/07(木) 19:52:54質問:screenだけでなくshellにも手を入れて現在の端末のDISPLAYを受け継ぐようにしたの?
0187名無しさん@お腹いっぱい。
2010/01/08(金) 08:06:56ポートスキャンw。その発想はなかった。
でもどっちを使うかはどう判断するの?(プロンプトにどう判断するための
情報出してるの?)
>>186
shellには手を入れてない。完全自動ではなく、あくまで1アクションで
取り込みできるようにしただけ。
最初はMSG_PUSHENVとか新設してscreen->SCREEN->sh-on-display/window ttyに
環境変数定義を突っ込ませるという方向でやってたのだけど、最終的に
- 入力中の側のscreenのpidをSCREEN側の環境変数で引けるように修正
- 設定で bind ^v eval 'stuff "injectenv $SCREEN_USERPID\012"' を追加
- 後は C-aC-v で "injectenv" シェル関数を呼んで環境変数を取り込み
というscreen修正+stuff+シェル関数コンボでやってみた。injectenv は
中でscreenの親pid(sh)を調べて、/proc/<pid>/environment から環境変数を
引っ張ってきて取り込んでる。
結局display/window tty側からはSCREENまでしか到達できず、
入力中userttyの判定ができない。userttyを掴んでいるscreen側から
アクションを起こす必要があって、エスケープコマンド経由になった。
で、その結果、stuffで突っ込むという微妙な方法(対話的にしか実行
できない)しか選べなかった。
理想的にはdisplay/window tty内のシェルからコマンド実行すると
大元のscreenまでシグナルが飛んで、そこから逆戻りでシェルに
環境変数突っ込んでくれるようなのがいいのだけど。
0188名無しさん@お腹いっぱい。
2010/01/09(土) 11:53:13>これだけ枯れてるソフトをいまさら改造というのも変なので、
GNU screenはいまも開発が続いているし、コミュニティにも
活気が戻ってきています。
http://lists.gnu.org/mailman/listinfo/screen-users
0189185
2010/01/09(土) 16:50:36emacsからXclientを立ち上げることも多いので、こんな形に落ち着いています。
ただnmapだけではscreen番号がわからないのは欠点ですが、
:0.1は完全にサブディスプレイなので問題になってません。
0190名無しさん@お腹いっぱい。
2010/01/09(土) 17:28:330191名無しさん@お腹いっぱい。
2010/01/09(土) 17:43:10何かある毎に躓いて時間潰すだろ
0192名無しさん@お腹いっぱい。
2010/01/09(土) 18:30:02それなんてWindows?
0193名無しさん@お腹いっぱい。
2010/01/13(水) 05:58:56何事も無くても、トラブって躓いて時間潰すのがWindows
0194名無しさん@お腹いっぱい。
2010/01/26(火) 21:24:38^Awでウィンドウリストを表示すると
0*$ bash 1$ bash 2-$ bash 3$ bash
のようになります。
hardlinestatusにフラグ付きでウィンドウリストを表示してるので
$を消したいんですけどどこで設定するんでしょうか。
$なしで表示できてるPCから~/.screenrcや~/.bashrc、~/.bash_profile、/etc/profile、/etc/bashrc、/etc/screenrc
あたりをコピーしてきてもだめでした。
0195名無しさん@お腹いっぱい。
2010/01/27(水) 00:42:32deflogin off にすればloginしないので$はつかなくなるな。
loginしたまま、$を表示させない方法は知らん。
0196名無しさん@お腹いっぱい。
2010/02/02(火) 02:04:40実行させることってできますか?
0197名無しさん@お腹いっぱい。
2010/03/11(木) 10:57:270198名無しさん@お腹いっぱい。
2010/03/13(土) 01:22:47ステータスバーの設定がめんどくさくてtmuxはあきらめた.
byobu(screen-profile)はありがたい.
0199名無しさん@お腹いっぱい。
2010/03/13(土) 22:24:550200名無しさん@お腹いっぱい。
2010/03/15(月) 03:35:27これはどんな感じなのでしょうか
0201名無しさん@お腹いっぱい。
2010/03/15(月) 08:47:261.2を試したら問題ないみたいなので常用することにした。
0202名無しさん@お腹いっぱい。
2010/03/15(月) 09:03:250203名無しさん@お腹いっぱい。
2010/03/15(月) 09:15:300204名無しさん@お腹いっぱい。
2010/03/15(月) 13:14:080205名無しさん@お腹いっぱい。
2010/03/15(月) 16:22:130206名無しさん@お腹いっぱい。
2010/03/15(月) 18:47:170207名無しさん@お腹いっぱい。
2010/03/16(火) 00:06:230208名無しさん@お腹いっぱい。
2010/03/16(火) 01:20:19ゴミが表示されなくて良いな。
0209名無しさん@お腹いっぱい。
2010/03/16(火) 01:21:450210名無しさん@お腹いっぱい。
2010/03/16(火) 10:06:520211名無しさん@お腹いっぱい。
2010/03/16(火) 10:16:570212名無しさん@お腹いっぱい。
2010/03/16(火) 16:19:14うちでは特に問題ないみたいだが。
>>210
tmuxもここでいいじゃん。次スレたてるときに統合スレにしようず。
0213名無しさん@お腹いっぱい。
2010/03/16(火) 20:14:06tmuxスレ立てろよマジで
0214名無しさん@お腹いっぱい。
2010/03/17(水) 02:42:110215名無しさん@お腹いっぱい。
2010/03/17(水) 02:49:270216名無しさん@お腹いっぱい。
2010/03/17(水) 07:28:07http://pc12.2ch.net/test/read.cgi/unix/1268778432/
0217名無しさん@お腹いっぱい。
2010/03/17(水) 09:32:55それともcygwinじゃないとダメかな?
0218名無しさん@お腹いっぱい。
2010/04/07(水) 01:30:300219名無しさん@お腹いっぱい。
2010/04/07(水) 11:49:17それはshellの問題じゃなくて
コンソール側の問題だからね
0220名無しさん@お腹いっぱい。
2010/04/10(土) 08:02:48tail -fとかすると改行がひどいことに。誰か解決した人いませんか?
0221名無しさん@お腹いっぱい。
2010/04/10(土) 09:06:270222名無しさん@お腹いっぱい。
2010/04/10(土) 10:31:44別になんともなく使えてるけど、どうひどくなんの?
リモート側のTERMとかシェルは?Tera Term側のTerm typeは?
0223名無しさん@お腹いっぱい。
2010/04/11(日) 21:47:40エスケープキーがかぶらないように設定するもん?それともssh用に違う端末立ち上げて使うべき?
0224名無しさん@お腹いっぱい。
2010/04/12(月) 00:06:560225185
2010/04/12(月) 03:20:240226名無しさん@お腹いっぱい。
2010/04/12(月) 03:21:48名前は間違って入ってしまっただけなんで無視してくだされ
0227名無しさん@お腹いっぱい。
2010/04/12(月) 08:24:24status line表示してるから、それが2段になってれば
エスケープを2度打ちするような条件反射になった。
さすがにscreen3重にして作業することはないな。
0228名無しさん@お腹いっぱい。
2010/04/12(月) 10:06:40基本的には違う端末使ってる。
切断回避のためだけに screen 起動する場合には、サーバ側で複数ウィンドウを
使う必要がないのでエスケープキーはそのまま。
0229名無しさん@お腹いっぱい。
2010/04/12(月) 12:25:05screenの英才教育を施して、公国が永遠に続くように願う。
0230名無しさん@お腹いっぱい。
2010/04/18(日) 02:58:58power shellでscreenライクな機能使えるの?
winのserver coreとかただただ、機能が減っただけで使いにくそう。
0231220
2010/04/19(月) 08:33:24レスありがとう。遅くなってすみません。
いったんTeraTermのバージョンを戻したのですが、これを書くために改めてインストールすると
問題は解決していました。一過性かこちらのホスト側の問題だったようです。お騒がせしました。
ちなみに発生した事象ですが、tail -f 中に改行(ENTER)を押すと、通常であればカーソルが
TeraTerm画面の左端に移ると思いますが、当時は「40個位のスペースが入った後に ^M」が
表示される状況でした。(わかるかな。。。表現力に乏しくて申し訳ない)
なおご質問の環境ですが、シェルはzsh、TERM, Term type共にvt100です。
0232名無しさん@お腹いっぱい。
2010/04/19(月) 11:04:33Control -> Reset Terminal で直るよ
0233名無しさん@お腹いっぱい。
2010/04/27(火) 02:33:36ログアウト時に実行したいコマンドがあり、これまでbashを利用していたときは
.bash_logoutに記述していたのですが、screenを利用するようになってからは
.bash_logoutが終了時に呼ばれないためどうすればいいか困っています。
alias logout='bash $HOME/.bash_logout;logout'
alias exit='bash $HOME/.bash_logout;exit'
なんていう気持ち悪い方法も試してみたのですが、当方、
ctrl+Dを使ってscreenを抜け出す癖があり、ctrl+Dを利用した場合は
exitコマンドやlogoutコマンドが直接叩かれているわけではないので
期待通りの動作はしませんでした。
どうすればctrl+Dを利用してscreenを終了した場合にも実行される環境を
構築できるでしょうか。
# ベストはscreen版の.bash_logoutのようなものが用意されていることなのですが…
解決法があれば教えていただけませんでしょうか。
よろしくお願い致します。
0234名無しさん@お腹いっぱい。
2010/04/27(火) 03:04:23> ctrl+Dを使ってscreenを抜け出す癖があり、ctrl+Dを利用した場合は
> exitコマンドやlogoutコマンドが直接叩かれているわけではないので
んじゃexitコマンドで抜けた場合は期待どおりの動作してるの?
0235233
2010/04/27(火) 03:14:02>んじゃexitコマンドで抜けた場合は期待どおりの動作してるの?
はい、しています。
bash利用時はctrl+Dで抜けてもexitで抜けてもlogoutで抜けても
.bash_logoutが実行されるみたいなんです。
また、screen利用時でも
alias exit='bash $HOME/.bash_logout;exit'
のようなものを.bashrcにでも書いておくことで、exitを叩いたときに
.bash_logoutが一応実行されます。
引き続きよろしくお願い致します。
0236名無しさん@お腹いっぱい。
2010/04/27(火) 03:19:560237名無しさん@お腹いっぱい。
2010/04/27(火) 03:27:200238233
2010/04/27(火) 05:27:22>>236
なるほど。これは最初にbashからscreenを起動して、screenが終わった後にbash側でexitが実行されて
.bash_logoutが実行されるというロジックでしょうか。
現在私はbashログイン後にscreenを立ち上げると、psでプロセスを見たときにシェルのプロセス(?)が
複数立ち上がってしまうことが嫌なことなどから.bash_profileに
exec screen -RR
と記述することでscreen環境を構築しています。説明不足で申し訳ありません。
ですので、screenのaliasを作るのは避けたいと考えています。
しかし勉強になります。ありがとうございます。
>>237
勉強不足でコマンドを見ただけではよく分からなかったのですが、実際に実行してみて驚きました。
bashに-lオプションを付けることでログインシェルとして起動するのがミソなのでしょうか?
# すみません、よく分かっていません。
bashでログイン後、screen bash -lを行い、ctrl+Dで抜けると見事に期待した動作をしました。
そこで、今回の問題を解決すべく私の.bash_profileを以下のように書き換えました
if [ "`screen -ls | egrep '\(Detached\)'`" = "" ]
then
exec screen bash -l #(1)
else
exec screen -RR #(2)
fi
しかし、これだと(1)を通ったときにログインできず、現在はここで躓いています。
(2)を通ったときはこれまで私が行っていた設定と同じ挙動なので問題ありません。
お手数をおかけしますが、アドバイスの程よろしくお願い致します。
0239名無しさん@お腹いっぱい。
2010/04/27(火) 10:26:150240233
2010/04/27(火) 14:26:35.screenrcの中身は以下の通りです。
vbell off
defencoding UTF-8
escape ^z^z
term xterm-256color
scrollback 10000
termcapinfo xterm-256color hs@:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
bind w windowlist -b
よろしくお願い致します。
0241名無しさん@お腹いっぱい。
2010/04/27(火) 16:33:57.screenrcに scrollbackを書いても無視されるはず
(一瞬エラーメッセージが出てないか?)
defscrollbackにすべし
「ログインできず」とは具体的にどんな振る舞い?
0242233
2010/04/27(火) 17:12:25defscrollbackに修正させて頂きました。
>「ログインできず」とは具体的にどんな振る舞い?
sshでログインしようとしてパスフレーズの認証のフェーズまでは行くのですが、
認証が通った後、(恐らく)screen bash -lが呼ばれた瞬間に
[screen is terminating]
Connection to hoge.jp closed.
と表示されてコネクションが切断されてしまいます。
>>238で示した.bash_profileを用意しているので、Detatchされたコネクションが存在した場合は
screen -RRが呼ばれるため、再アタッチされて問題なく接続することができます。
うーん、screen bash -lが呼ばれたときは再帰的に.bash_profileが呼ばれてbash -lが大量に呼ばれてしまってるのでしょうか…(?)
引き続きお願い致します。
0243名無しさん@お腹いっぱい。
2010/04/27(火) 18:21:01exec screen bash --login --noprofile ってやってみたら?
0244233
2010/04/27(火) 18:47:22exec screen bash --login --noprofile
に変えてみたところ、ログアウト時の.bash_logout動作を確認できました。
しかし、--noprofileオプションであるが故に.bashrc等が読まれませんorz
.bashrcが悪いのかと思い、.bashrcをリネームした後に
exec screen bash -l
で試してみましたが、こちらも状況変わらずログインできませんでした。
何度も申し訳ありませんが、よろしくお願い致します。
0245233
2010/04/27(火) 18:56:21連投すみません。.bash_profileへ
if [ "$STY" = "" ]
を加えてscreenの状態に入っているかどうかを判定することで、期待した動作をしました!!
以下のような形です。
if [ "`screen -ls | egrep '\(Detached\)'`" = "" ]
then
if [ "$STY" = "" ]
then
exec screen bash -l
fi
else
exec screen -RR
fi
やはり再帰的にbashが呼ばれていて落ちていたということなのでしょうか。
この度は数々のアドバイスありがとうございました。
0246名無しさん@お腹いっぱい。
2010/04/27(火) 19:01:32すみません、どうしても後1点だけお聞きしたいことがあります。
.bash_profile内でexec screenにてscreenを起動すると、
Last login: Tue Apr 27 18:58:15 2010 from hoge.jp
等のログインメッセージがターミナル上には(実質)表示されないことになってしまうと思います。
これを表示させる方法はあるでしょうか?
ログインメッセージをファイルに書き出しておいて、それを.bashrcでcatするぐらいしかないでしょうか。
立て続けに申し訳ありませんが、アドバイスを頂けると幸いです。
0247名無しさん@お腹いっぱい。
2010/04/27(火) 20:05:12で勘弁してくれ
0248246
2010/04/28(水) 03:41:34Last loginに関しては似たようなことを.bashrcに
echo `lastlog -u $LOGNAME | tail -n 1 | awk '{printf("Last login: %s %s %s %s %s from ",$4,$5,$6,$7,$9)}'``last -ad | egrep $LOGNAME | egrep -v '0\.0\.0\.0' | head -n 1 | awk '{print $NF}'`
と記述して誤魔化してるんですが、やはりログインメッセージ全てを出すことは難しいでしょうか…
# Last login以外にもログインメッセージとして表示されるものがあるんです;;
0249名無しさん@お腹いっぱい。
2010/04/28(水) 08:02:32> シェルのプロセス(?)が複数立ち上がってしまうことが嫌
ま、この手のキテレツな美意識に共感できる人はこのスレには少ないだろうから
これ以上の助言は出てこないかも知れん
screen使ってたらshellのプロセスが多数存在するのが普通だからね
つーかshellプロセスががひとつだけの状態でscreen使っても喜び少ない
がんばって独りで修羅の道を貫いてくれ
0250名無しさん@お腹いっぱい。
2010/04/28(水) 16:13:300251名無しさん@お腹いっぱい。
2010/04/28(水) 18:25:11解決策はありますか><
■ このスレッドは過去ログ倉庫に格納されています