Как заставить screen -R прикрепляться к самому младшему отдельному сеансу?

17

Я использую экран на Debian Lenny, и я хотел бы использовать эту -Rопцию. От man screen:

   -R   attempts  to  resume  the  youngest  (in  terms  of creation time)
        detached screen session it finds.  If successful, all  other  com‐
        mand-line  options  are  ignored.   If no detached session exists,
        starts a new session using the specified options, just  as  if  -R
        had  not been specified.

Тем не менее, когда я бегу screen -R его, он фактически не подключается к самому младшему отдельному сеансу. Вместо этого он жалуется, что есть «несколько подходящих экранов» и что мне нужно выбрать один из них.

Я что-то пропустил? Как мне сделать эту работу как рекламируется?

Вим Коенен
источник
1
Note: Time-based session selection is a Debian addition.==> Используете ли вы по умолчанию screenDebian или вы скомпилировали его самостоятельно?
JanC
@Jan Claeys: Сначала я попробовал бинарный файл Debian lenny, затем создал экран из последнего источника на git: //git.savannah.gnu.org/screen.git. Поведение было таким же.
Вим Коенен

Ответы:

19

Попробуйте использовать screen -RR.

Пример:

$ screen -ls
There are screens on:
    5958.pts-3.sys01    (08/26/2010 11:40:43 PM)    (Detached)
    5850.pts-1.sys01    (08/26/2010 11:40:35 PM)    (Detached)
2 Sockets in /var/run/screen/S-sdn.

Обратите внимание, что экран 5958 самый младший. Использование screen -RRподключается к экрану 5958. -RRОпции несколько более подробно описаны в документации по -d -RR.

   -d -RR  Reattach a session and if necessary detach or  create  it.  Use
           the first session if more than one session is available.

Другой трюк, который я часто использую, - это использование -S чтобы присвоить экрану метку / ярлык. Затем вы можете повторно присоединить этот тег, не вспоминая, что происходило на каждом экране, если список становится громоздким.

Пример (запускать экраны для vim и curl):

$ screen -dm -S curl
$ screen -dm -S vim 
$ screen -list

There are screens on:  
    11292.vim       (08/27/2010 12:02:53 AM)        (Detached)
    11273.curl      (08/27/2010 12:01:42 AM)        (Detached)

Примечание. Эта -dmопция использовалась только для запуска отдельного экрана.

А потом, позже, вы можете легко восстановить соединение с помощью тега curl.

# screen -R curl
Давид Нараян
источник
Не screen -D -RRлучше чем screen -d -RR?
niutech
Чтобы сэкономить время на клавише Shift, screen -rrтоже работает.
Fmstrat
0

Я использую screen -R в gnome-терминал и, как вы сказали, если одновременно запущены 2 сессии, то gnome-терминал немедленно завершает работу.

Я решил это, запустив

sh -c "screen -R || screen -D -RR"

это работает так, как вы ожидаете.


источник
или просто "screen -RR", как предложено Дэвидом: D