3

Я хочу запускать экран gnu автоматически при входе на удаленный компьютер через ssh, поэтому я добавляю

exec screen

в конце файла .bash_profile я узнаю, что когда я прекращаю проверку, мое соединение с хостом ssh также немедленно закрывается. Как я могу избежать этого?

В случае, если я хочу возобновить экран (например, с именем «старый экран»), потому что я начинаю проверять каждый раз, когда я вхожу в систему, я сталкиваюсь с ситуацией, когда я присоединяюсь к «новому экрану», и я хочу снова подключиться к 'старый экран. Если я просто

screen -r old-screen

Я нахожусь на рекурсивном экране, и я не могу перемещаться по «старому экрану», потому что все сочетания клавиш получаются с помощью «нового экрана». Если я попытаюсь выйти из текущего экрана, мое подключение к удаленному компьютеру также будет немедленно потеряно.

Любое решение для этого?

4 ответа4

6

Вместо использования screen -r который пытается возобновить сеанс экрана, вы можете использовать screen -R который пытается возобновить сеанс экрана и создает новый, если таковой не существует.

   -r [pid.tty.host]
   -r sessionowner/[pid.tty.host]
        resumes  a detached screen session.  No other options (except com-
        binations with -d/-D) may be specified, though an optional  prefix
        of  [pid.]tty.host  may  be needed to distinguish between multiple
        detached screen sessions.  The second form is used to  connect  to
        another  user's  screen session which runs in multiuser mode. This
        indicates that screen should look for sessions in  another  user's
        directory. This requires setuid-root.

   -R   attempts to resume the first detached screen session it finds.  If
        successful, all other command-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. The option  is  set
        by default if screen is run as a login-shell (actually screen uses
        "-xRR" in that case).  For combinations with the -d/-D option  see
        there.

Лично я склонен использовать screen -DRA .

   -D -R   Attach here and now. In detail this means: If a session is run-
           ning, then reattach. If necessary detach  and  logout  remotely
           first.   If  it  was not running create it and notify the user.
           This is the author's favorite.
   -A      Adapt  the  sizes of all windows to the size of the current termi-
           nal.  By default, screen tries to restore  its  old  window  sizes
           when  attaching  to  resizable  terminals  (those with "WS" in its
           description, e.g. suncmd or some xterm).
2

Следующее, кажется, работает для меня в моем: ~/.bash_profile

## if $STY is not set...
if [ -z "$STY" ]; then
    screen  -d -RR
fi

Я взял ответ отсюда:https://superuser.com/a/52329/76204

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

1

Я часто обдумывал одно и то же.

Самое близкое, что я придумал, - это запуск экрана как часть команды ssh для подключения к удаленному серверу:

$ ssh -t foo@bar.com screen -r

или в PuTTY введите screen -r в поле Remote command для настроек SSH.

Я склонен псевдоним нескольких команд SSH для разных хостов и разных сеансов экрана.

0

Может ли ваша ОС поддерживать переключатели командной строки с определением команды оболочки в параметре "login" для вашей учетной записи? Если это так, попробуйте изменить его на:

  • /path/to/bash -c "screen -R"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .