ナンクル力学系

学んだ事を書き連ねていこう。

Posts Tagged ‘screen

GNU screen でヘルプコマンドを読むときに使う –help|less を一発入力

leave a comment »

bind ^H stuff "--help 2>&1 | less"

.scrrenrc などに書く.

  • sutff STRING で, STRING をキーボードから入力した場合と同じことに.
  • 2>&1 で,標準エラー出力も less へ.

Written by tkf

September 24, 2009 at 12:58 pm

Posted in PC

Tagged with

screenで指定範囲内にあるwindowをすべて表示するスクリプト

leave a comment »

このスクリプトをscreenの中で「script_name.sh 3 15」とかで実行するとwindow idが3番から15番までのwindowが一覧表示される。何をやっていたかが一目で分かって便利。

計算中のプログラムの進行状況をチェックするのに使っている。

実行するとこんな感じに:

実行するとこんな感じ

実行するとこんな感じ

ソース:

#!/bin/sh
tmp_file=`mktemp` || exit 1
last=`expr $2 - 1`

echo "only" >> $tmp_file

for i in `seq $1 $last`
do
    echo "split" >> $tmp_file
done

echo "focus top" >> $tmp_file

for i in `seq $1 $2`
do
    echo "select ${i}" >> $tmp_file
    echo "focus down" >> $tmp_file
done

#cat $tmp_file
#echo $tmp_file
screen -X source $tmp_file

rm -f $tmp_file

「screen -X コマンド」や「screen -X eval “コマンド” “コマンド” “コマンド” …」を使うとなぜか他の端末のscreenで実行されるので、仕方なくテンポラリファイルを作成して「screen -X source テンポラリファイル」としている。もしかしたらもっとスマートな方法があるかも。

Written by tkf

November 8, 2008 at 3:54 am

Posted in PC

Tagged with ,

screen使い始めて2日目のメモ

leave a comment »

エスケープとかコマンドキーってのがscreen内でのコマンドの接頭辞?だと分かってればあとは怖くないはず。(ほんとか?w)

Ctrl-Tに設定。

.screenrcはこんな感じ(ほとんど最後に書いた参考リンクからのコピペw):

escape ^Tt
markkeys h=^B:l=^F:$=^E:^U=^Z:^D=^V
shell zsh
startup_message off
caption always  "%+0<%?%F%{= wm}%:%{= wk}%? %-w%{=u dy}%50>%n %t%{-}%+w%65< %=%?%F%{.b}%?%y/%m/%d(%D) %?%F%{.m}%?%c%?%F%{wd}%?%? &#91;%0`&#93;%?"
&#91;/sourcecode&#93;
困ったら「C-T ?」でヘルプが開く。

&#91;caption id="" align="alignnone" width="500" caption="screenのヘルプ"&#93;<a href="http://www.flickr.com/photos/30719858@N03/3010627704/sizes/m/"><img title="screenのヘルプ" src="http://farm4.static.flickr.com/3202/3010627704_ef9b362c7a.jpg" alt="screenのヘルプ" width="500" height="365" /></a>[/caption]

見づらいのでコピペしてみた:


   Screen key bindings, page 1 of 1.

   Command key:  ^T   Literal ^T:  t

        break       ^B b      
        clear       C         
        colon       :         
        copy        ^[ [      
        detach      ^D d      
        digraph     ^V        
        displays    *         
        dumptermcap .         
        fit         F         
        flow        ^F f      
        focus       ^I        
        hardcopy    h         
        help        ?         
        history     { }       
        info        i         
        kill        K k       
        lastmsg     ^M m      
        license     ,         
        lockscreen  ^X x      
        log         H         
        login       L         
        meta        t         
        monitor     M         
        next        ^@ ^N sp n
        number      N         
        only        Q         
        other       ^T        
        pow_break   B         
        pow_detach  D         
        prev        ^H ^P p ^?
        quit        \         
        readbuf     <         
        redisplay   ^L l      
        remove      X         
        removebuf   =         
        reset       Z         
        screen      ^C c      
        select      '         
        silence     _         
        split       S         
        suspend     ^Z z      
        title       A         
        vbell       ^G        
        version     v         
        width       W         
        windows     ^W w      
        wrap        ^R r      
        writebuf    >         
        xoff        ^S s      
        xon         ^Q q      

^]  paste .
"   windowlist -b
-   select -
0   select 0
1   select 1
2   select 2
3   select 3
4   select 4
5   select 5
6   select 6
7   select 7
8   select 8
9   select 9
I   login on
O   login off
]   paste .

    [Press Space or Return to end.]

manページは情報量多すぎるので読むのが大変。でも困って検索すると大体答えがみつかる。

便利だと思ったコマンドはwindowlist(C-T “)。開いてるウィンドウのリストを表示:

window list

window list

これは便利!

screenは作業を半分?自動化するのに向いてる気がする。

ウィンドウの新規作成は「C-T c」なんだけど、コマンドで(screen内で開いてるシェルから)screen なんちゃらって打ってもウィンドウ作れる。しかもそのウィンドウ内で実行するコマンドを指定できるから、ウィンドウ開いてシェルスクリプト(expectで書いた)使ってsshでサーバにアクセスしてqsubのインタラクティブモードで計算ノード取ってという一連の作業を自動化出来た。これで10個くらいループで回せば、一気に計算準備が整う。すげえ。

これやりながらzshとexpectも覚えた。

研究しろw

参考:

Written by tkf

November 8, 2008 at 12:19 am

Posted in PC

Tagged with