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/
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解決策はありますか><
0252名無しさん@お腹いっぱい。
2010/04/28(水) 21:29:39deflogin off
0253名無しさん@お腹いっぱい。
2010/04/29(木) 10:26:090254名無しさん@お腹いっぱい。
2010/05/01(土) 22:05:00patchどこかにある?
0255名無しさん@お腹いっぱい。
2010/05/23(日) 22:13:02terminfoでKJにjisを指定するとHS行の文字化けは無くなりますが、今度
は端末文字が化けてしまいます。HS行に%Dで曜日を漢字で表示したいので
すが、どのように設定すればいいでしょう?
0256名無しさん@お腹いっぱい。
2010/06/17(木) 13:45:470257名無しさん@お腹いっぱい。
2010/07/01(木) 00:01:17hardstatus に時間の表示をさせると、時間が変わるタイミングで日本IMで入力中の
文字列がクリアされるのですが、これを避ける方法ってないですか?
0258名無しさん@お腹いっぱい。
2010/07/02(金) 01:06:27それってTerminal.appお使いの時ですよね?iTermだとクリアされませんよ。
Terminal.appだと16色表示しかできなくて不便なことが多いので、同じ問題に遭遇してiTermに乗り換えました。お試しあれ。
0259名無しさん@お腹いっぱい。
2010/07/02(金) 02:02:050260名無しさん@お腹いっぱい。
2010/07/02(金) 20:19:43たしかに iTerm だとクリアされないですね。
でも、Visor から離れられないので、何とか Terminal.app での解決を探したいんですよね……。
ガッ _, ,_ _, ,_ガッ♪
ガッ _, ,_ ( ・д・)(・д・ ) _, ,_ガッ♪
( ・д・)☆ミ⊂ ⊃彡☆(・д・ )
⊂彡☆))゚△´*)>>259☆ミ⊃ガッ♪
, ,∩彡☆ ☆ミ∩, ,
( ) ガッ ( )
ガッ ガッ♪
0261名無しさん@お腹いっぱい。
2010/08/04(水) 13:47:13screenはredhatとかお堅いのにも入ってるのが有り難いんだけど
tmuxはまだ時間がかかるか・・・
0262名無しさん@お腹いっぱい。
2010/08/10(火) 21:50:56上書きされてしまうんだけど何でだろう。hardstatus alwayslastlineにしてるから
アプリのタイトルバーには出力されないはずだと思ったけど、理解が間違ってる?
端末はputtyなんだけどこれのせいかな
0263名無しさん@お腹いっぱい。
2010/08/11(水) 05:14:330264名無しさん@お腹いっぱい。
2010/08/11(水) 22:20:180265名無しさん@お腹いっぱい。
2010/08/11(水) 23:37:49あと、tmuxのスレあるよ。
0266264
2010/08/12(木) 13:05:49CentOS5でyumで1.4.13-1に上げたんだけど駄目で、
自分で1.4.14bを落としてきて入れたらコンパイルできたんで
アルェーっと思った次第
つかtmuxスレあったんだ、スマン
0267名無しさん@お腹いっぱい。
2010/08/12(木) 13:10:120268名無しさん@お腹いっぱい。
2010/08/12(木) 13:15:130269名無しさん@お腹いっぱい。
2010/08/12(木) 13:43:28うざいからNGワードにしてるよ。
0270名無しさん@お腹いっぱい。
2010/08/13(金) 22:30:300271名無しさん@お腹いっぱい。
2010/08/17(火) 14:34:20そういうの報告しなくていいよ。
0272名無しさん@お腹いっぱい。
2010/08/17(火) 15:53:29ウィンドウ数が多すぎたり、同じ名前だったりすると混乱しない?
hardstatusを最下行の1ラインではなく、リージョン1つに丸々割り当ててしまって
縦にリスト表示できたりしたら便利なんだが
0273名無しさん@お腹いっぱい。
2010/08/18(水) 07:06:49ウインドウ数が多い場合はウィンドウ番号で分けるのも一つの手。
デフォルトのコンパイルオプションだと40まで割りふれるはず。
常に表示される訳じゃないけど、:windowlist の一覧では物足りない?
0274名無しさん@お腹いっぱい。
2010/08/31(火) 21:48:44topで見てもメモリもCPUも全然余裕なのに
なんでじゃろ
0275名無しさん@お腹いっぱい。
2010/08/31(火) 22:15:530276名無しさん@お腹いっぱい。
2010/08/31(火) 22:36:57てか、今もう一度試したら大丈夫だった
時間経過で変わるんだろうか・・・うーむ分からん
0277名無しさん@お腹いっぱい。
2010/09/04(土) 19:48:57区別して移動することってできませんか?
例えばC-Iは横分割のみの移動、C-Uは縦分割のみ、って設定できるといいんですが。
0278名無しさん@お腹いっぱい。
2010/09/04(土) 20:50:240279名無しさん@お腹いっぱい。
2010/09/04(土) 21:52:12tmuxならできるんですか。前に使ってみたけどイマイチ慣れなくてやめちゃったんだよなぁ。。。
もう一度やってみようかしら
0280名無しさん@お腹いっぱい。
2010/09/04(土) 21:53:370281名無しさん@お腹いっぱい。
2010/09/05(日) 09:03:18tmuxだとselect-paneコマンドの-D/L/R/Uで移動方向を指定できる。
0282名無しさん@お腹いっぱい。
2010/09/07(火) 13:56:36shell>screen tail -f /var/log/messages
ってやって、C-c送ったらscreenごと落ちちゃう。
manには
>When a program terminates, screen (per default) kills the window that contained it.
ってあるからdefaultじゃないオプションがありそうなんだけど見つからず・・・。
0283名無しさん@お腹いっぱい。
2010/09/07(火) 15:35:32zombieとかdefzombieあたりを設定するとなんとかなるかもしれない
0284名無しさん@お腹いっぱい。
2010/09/08(水) 12:38:09thx! やってみたら思い通りにならなかったけどもうちょっと調べてみる!!
0285名無しさん@お腹いっぱい。
2010/09/14(火) 22:22:21クマッタ(´・(ェ)・`)
0286名無しさん@お腹いっぱい。
2010/09/14(火) 23:10:520287名無しさん@お腹いっぱい。
2010/09/15(水) 14:14:330288(´・(ェ)・`)
2010/09/15(水) 17:28:55>>287
stty eraseかな?<undef>にしても変わらんかった
もうめんどくなってキーバインドごと変えてしまった
0289sage
2010/10/02(土) 12:11:51escape に Mac の Command キーを割り当てる方法ってあるのかな?
0290名無しさん@お腹いっぱい。
2010/10/02(土) 15:24:34Remap Escape Key > Escape to Command_L
という項目があるのは見つけた。
0291名無しさん@お腹いっぱい。
2010/10/08(金) 15:55:13これを実現するには設定ファイルにどう記述すれば良いですか?
0292名無しさん@お腹いっぱい。
2010/10/11(月) 00:57:14page upをターミナルエミュレータがフックしてたら無理だな
0293名無しさん@お腹いっぱい。
2010/10/20(水) 01:22:470294名無しさん@お腹いっぱい。
2010/10/20(水) 01:46:440295名無しさん@お腹いっぱい。
2010/10/20(水) 21:49:13(できれば自分の.vimrcを読ませられれば便利なんですが、さすがに無理ですか?)
0296名無しさん@お腹いっぱい。
2010/10/20(水) 22:35:21hardsstatusに[%m/%d %02c:%s]を入れて日時を表示させるようにしたら、
日本語を入力できなくなったんですが回避策ってありますか?
秒の数字が変わるたびに、未確定の日本語が全部クリアされてしまいます。
0297名無しさん@お腹いっぱい。
2010/10/21(木) 19:45:520298名無しさん@お腹いっぱい。
2010/10/25(月) 16:36:23長く設定したらhardstatusが詰まるし、短くしたらcaptionがスカスカになるんだよなぁ。
タイトルが両者共有なのが原因なわけだけど、なんか上手い方法ないものか・・・。
0299名無しさん@お腹いっぱい。
2010/11/04(木) 01:51:28リモートAから他のリモートBにssh接続するときにリモートAに接続するときの鍵でリモートBに接続したいと思っています。
これはagent forwardingの話だと思うのですが、
puttyでリモートAで接続したときに接続時にscreenを立ち上げるようにするとagent forwardingができません。
screenを立ち上げずに接続した場合は、リモートBに接続できることを確認しました。
ssh-add -lするとやはりscreenなしで接続した場合はちゃんと鍵の情報が追加されており、
screenの場合は追加されていません。
上手いことヤル方法はないでしょうか?
0300名無しさん@お腹いっぱい。
2010/11/04(木) 07:24:140301名無しさん@お腹いっぱい。
2010/11/04(木) 23:05:480302名無しさん@お腹いっぱい。
2010/11/05(金) 00:21:24echo $SSH_AUTH_SOCKしてからscreenにはいってsetenvする。
0303名無しさん@お腹いっぱい。
2010/11/05(金) 01:04:54間違えてシャットダウンしちゃって、一瞬「危ねーセフセフ」って思ったあと「いや駄目じゃんorz」って気づいたり
俺だけかw
0304名無しさん@お腹いっぱい。
2010/11/05(金) 01:38:270305299
2010/11/05(金) 09:13:58試してみる
環境変数がわたらない問題なのか
0306名無しさん@お腹いっぱい。
2010/11/11(木) 20:22:44何故か効かないのですが。
0307!omikuji
2010/11/12(金) 08:31:590308名無しさん@お腹いっぱい。
2010/11/12(金) 14:56:05ありがとうございます。^HにするとCtrl-Hで効いてくれました。
ただ、Backspaceキー自体は何のキーコードで効いてくれるんでしょうか?
screen以外では普通に効きますし、xevで調べてるとちゃんとkeycode 22
として認識されていました。キーカスタマイズなどはしていません。
ググってみたところ、どうもscreenのCtrl-hには色々と面倒なことがあるようで
Debianだと bindkey -k kb stuff "\177" を付ける付けないといったtipsがあるようです。
0309名無しさん@お腹いっぱい。
2010/11/12(金) 15:39:22バックスペース押しても消えないっていう状態でよい?
stty erase バックスペース押す エンター押す
0310名無しさん@お腹いっぱい。
2010/11/12(金) 16:16:220311名無しさん@お腹いっぱい。
2010/11/12(金) 22:17:46はい。
stty eraseを ^? と ^h 、screenのbindを ^? と ^h、キーボード入力を Ctrl-h と Ctrl-BS
と全ての組み合わせを試してみましたが、全てにおいてCtrl-BSが効きませんでした。
環境ですが、WindowsXP 32bit からPuTTY 0.60 ごった煮版で CentOS 5.3 64bit にsshしています。
screenのせいではないかもしれないので、他の環境でも試してみます。
ありがとうございました。
0312名無しさん@お腹いっぱい。
2010/11/12(金) 22:35:05う?
0313名無しさん@お腹いっぱい。
2010/11/12(金) 22:45:55発生するんだよなぁ。
0314名無しさん@お腹いっぱい。
2010/11/13(土) 00:27:52一般的解 そんな変態コンビネーションは使わないに限る
0315名無しさん@お腹いっぱい。
2010/11/13(土) 09:59:130316311
2010/11/13(土) 18:50:16ああもう訳が分からない・・・。
0317名無しさん@お腹いっぱい。
2010/11/14(日) 11:14:51PuTTYだったらバックスペースのコードを選択するオプションがあるでしょ
0318名無しさん@お腹いっぱい。
2010/11/15(月) 19:39:470319名無しさん@お腹いっぱい。
2010/11/15(月) 21:22:05読む気がせんわ
0320名無しさん@お腹いっぱい。
2010/11/28(日) 20:26:41backtick 0 0 0 conky -c hoge
conky側は設定ファイルに
out_to_console yes
out_to_x no
…
TEXT
${scroll 30 5 CPU:$cpu Mem:$men 〜一行内容を記述}
こうすると、電光掲示板のように内容が流れる。
30が文字幅数、5が送り文字数って意味、後はhardstatusの空き幅に併せて設定するだけ。
console表示なんで若干制約受けるが(カラーやグラフバー等)conkyの機能が丸々使え、
文字数を気にせず表示できます(その気になればrssをだらだらと)。
dzenにconky表示してる人がいて思いついたが概出ならスマソ。
まあ、CPUリソースとかが流れちゃうのは気持ち悪いちゅーのはあるが…
0321名無しさん@お腹いっぱい。
2010/11/28(日) 20:29:59>〜一行で内容を記述
0322名無しさん@お腹いっぱい。
2010/11/29(月) 13:26:35すんげー、なんでも出来ちゃうぞこれ。
多段captionにして色々表示したくなってきた。
ついでにネタ投下、conky側のカラー指定は当然無視されるが、
${exec echo "\005{= Bw}"}等と送ってやればscreen側で認識してくれる。
とりあえずやっつけのconkyrc、hardstatusは手狭になったのでconky以外は表示してないw
background no
no_buffers yes
out_to_stderr no
out_to_console yes
out_to_x no
update_interval 1.0
TEXT
${exec echo "\005{= Bw}"}$sysname${exec echo "\005{= Mk}"} ${exec echo "\005{= Gk}"}Uptime: $uptime${exec echo "\005{= Mk}"\
${exec echo "\005{= yk}"}RAM Usage: $mem/$memmax${exec echo "\005{= Mk}"} ${exec echo "\005{= wr}"} \
${scroll 30 5Proc: $running_processes/$processes Disk: $fs_used/$fs_size $fs_bar | $nodename - $kernel on $machine} \
${exec echo "\005{= Mk}"}$time
0323320
2010/11/29(月) 18:12:49うわー、さすが2chこんな手あったんですね。
色も付くなら、もうbyobuいらんね〜。
あれもこれもでhardstatusがいっぱい、タイトル表示するスペースが無い。
0324名無しさん@お腹いっぱい。
2010/11/29(月) 22:29:50バッドノウハウ過ぎー
0325名無しさん@お腹いっぱい。
2010/11/29(月) 23:31:270326名無しさん@お腹いっぱい。
2010/11/30(火) 00:09:20procmail捨て捨てしてmaildropが出来たという感じで。
0327名無しさん@お腹いっぱい。
2010/11/30(火) 01:27:22試しにbacktick 0 0 0 echo "\005{= Bw}" と直線やると巧くいく。
どっちの問題かようわからん??
0328名無しさん@お腹いっぱい。
2010/11/30(火) 02:56:16ああでもちゃんとコミットするならそれでいいか。パッチ公開とかforkとか残念な結果にしかならないよな。
0329名無しさん@お腹いっぱい。
2010/11/30(火) 07:43:55副次的なバグでもあれば別だけどscreen側をどうこうってのは違うんじゃないかな?
0330名無しさん@お腹いっぱい。
2010/11/30(火) 10:52:54個人的にはゴテゴテしてんのはあんま好きじゃないな
■ このスレッドは過去ログ倉庫に格納されています