Действительно ли это - хорошая идея поместить “экран-r” в мой .bashrc?

Я хотел бы использовать экран для поддержания ssh сессий на моем сервере. Было бы хорошо, если я мог бы автоматически возобновить какую-либо рабочую сессию для своего пользователя, когда я вхожу в систему. Простой способ сделать это добавило бы "экран-r" к моему .bashrc, и это, кажется, хорошо работает. Я просто задаюсь вопросом, повредит ли это что-нибудь при условиях, которые я еще не протестировал. Кто-либо с опытом здесь, кто может сказать мне, является ли это тем, что я должен сделать?

17
задан 25.05.2011, 10:08

2 ответа

Вам нужно screen -R -d и к автоматически присоединению к существующей сессии, если Вы существуете и создаете сессию иначе.

Удостоверьтесь, что Вы только делаете это на интерактивных оболочках. Источники Bash ~/.bashrc даже для неинтерактивных оболочек, когда его родительский процесс является rshd или sshd (это упоминается в документации, но легко отсутствовать). Можно сказать, что оболочка является интерактивной потому что $- содержит i.

case $- in
  *i*) screen -Rd;;
esac

Это легко не позволит Вам выполнить различные экранные сессии в различных терминалах.

Необходимо будет отсоединиться с экрана, затем выйти из родительской оболочки, чтобы выйти из системы. Это может быть разрешено при помощи exec screen вместо screen.

При запуске оболочки кроме оболочки входа в систему Вы будете помещены в экран, который не является тем, что Вы хотели бы большую часть времени. Я, по крайней мере, ограничил бы это тем, когда Вы работаете непосредственно на интерактивной ssh сессии с чем-то как следующее в Вашем ~/.bash_profile:

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

Будьте осторожны, когда Вы сделаете сложные вещи с Вашим .bashrc поскольку ошибка, которая заставляет оболочку выходить, мешала бы входить в систему.


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

ssh -t host.example.com screen -R -d

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

20
ответ дан 07.12.2019, 10:39

Ваши сценарии запуска X-сервера часто запускают новую оболочку, например, если Вы входите в систему с помощью gdm использование "Определяемой пользователем Сессии".

Я думаю что-либо, что не выходит, мог бы заставить Ваши X запусков зависать. Это включало бы screen -r.

2
ответ дан 07.12.2019, 10:39

Теги

Похожие вопросы