Posts Tagged ‘screen’
GNU screen でヘルプコマンドを読むときに使う –help|less を一発入力
bind ^H stuff "--help 2>&1 | less"
を .scrrenrc などに書く.
sutff STRINGで,STRINGをキーボードから入力した場合と同じことに.2>&1で,標準エラー出力も less へ.
screenで指定範囲内にあるwindowをすべて表示するスクリプト
このスクリプトを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 テンポラリファイル」としている。もしかしたらもっとスマートな方法があるかも。
screen使い始めて2日目のメモ
エスケープとかコマンドキーってのが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 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 “)。開いてるウィンドウのリストを表示:
これは便利!
screenは作業を半分?自動化するのに向いてる気がする。
ウィンドウの新規作成は「C-T c」なんだけど、コマンドで(screen内で開いてるシェルから)screen なんちゃらって打ってもウィンドウ作れる。しかもそのウィンドウ内で実行するコマンドを指定できるから、ウィンドウ開いてシェルスクリプト(expectで書いた)使ってsshでサーバにアクセスしてqsubのインタラクティブモードで計算ノード取ってという一連の作業を自動化出来た。これで10個くらいループで回せば、一気に計算準備が整う。すげえ。
これやりながらzshとexpectも覚えた。
研究しろw
参考:


