近頃版/another blog@hatena/Wiki/BBS
< 仕事 | 実質は同窓会 >
多数のホストを相手にターミナルを使う必要があるのでscreenをバリバリ使って作業というか仕事をしているわけですが、ときどき諸般の事情でsshが落ちたりなんだりするので定型的な起動処理をするスクリプトを書いてみた。
#!/bin/sh NAME='screenname' ACTIVE=`screen -ls | grep $NAME` if [ "$ACTIVE" != "" ]; then exec screen -r $NAME fi host1='host1.example.com' host2='host2.example.com' ( sleep 3 && screen -X -S $NAME screen -t shell bash screen -X -S $NAME screen -t host1 ssh user@$host1 && screen -X -S $NAME screen -t host2 ssh user@$host2 ) & screen -S $NAME
トリックは、先に'sleep' と '&&'で連結した起動処理群を実行してからscreen本体を起動している点。最初は素直に 'screen -d -m -S $NAME' で起こしてからやっていたのだが、(自分の環境では)BackSpaceの動作がヘンなことになってしまったのでこのようにごまかしてみた次第。
つことで、複数のscreenナシでは生きられない方は是非お試しあれ。