ナンクル力学系

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

Posts Tagged ‘screen

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

without comments

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をすべて表示するスクリプト

without comments

このスクリプトを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日目のメモ

without comments

エスケープとかコマンドキーってのが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}%?%? [%0`]%?"

困ったら「C-T ?」でヘルプが開く。

screenのヘルプ

screenのヘルプ

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

   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