screen -R が仕様通り動かない
id:otn:20120512 で、
ログイン時に自動的に screen が起動されるように。 $ vi .bash_profile 末尾に追加。 exec screen -R
と書いた。man screen に、
-R デタッチされている screen セッションのうち最初に見つかったものを再開しようと試みる。
と書いてあるが、実際にデタッチされいるセッションが複数あると、メッセージを出力して終了してしまう。
これでは駄目なので、書き換える。
$ screen -ls There are screens on: 31337.pts-5.XXXXXXXXXX (Detached) 20235.pts-0.XXXXXXXXXX (Attached) 31254.pts-3.XXXXXXXXXX (Detached) 3 Sockets in /var/run/screen/S-t.
のようにセッションの状況が調べられるので、これを使って .bash_profile に下記のように書く。
for x in `screen -ls` do case "$x" in *Detach*) exec screen -r "$y" ;; esac y="$x" done exec screen