Я хотел бы использовать экран для поддержания ssh сессий на моем сервере. Было бы хорошо, если я мог бы автоматически возобновить какую-либо рабочую сессию для своего пользователя, когда я вхожу в систему. Простой способ сделать это добавило бы "экран-r" к моему .bashrc, и это, кажется, хорошо работает. Я просто задаюсь вопросом, повредит ли это что-нибудь при условиях, которые я еще не протестировал. Кто-либо с опытом здесь, кто может сказать мне, является ли это тем, что я должен сделать?
Вам нужно 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
(Вы, вероятно, создали бы псевдоним оболочки или ярлык настольной среды на клиенте.) Тот путь можно легко принять решение не выполнить экран, указать альтернативное имя сессии и так далее.
Ваши сценарии запуска X-сервера часто запускают новую оболочку, например, если Вы входите в систему с помощью gdm использование "Определяемой пользователем Сессии".
Я думаю что-либо, что не выходит, мог бы заставить Ваши X запусков зависать. Это включало бы screen -r
.