Заставить экран GNU пережить перезагрузку
Я часто использую экран GNU. Я нахожу очень раздражающим, что каждый раз, когда сервер должен быть перезагружен, я теряю все свои сессии (даже если я знаю заранее, мне нужно настроить все заново).
Я искал в интернете возможности, как заставить экран пережить перезагрузку, но не нашел ничего, что бы сработало для меня. Некоторые методы, которые я нашел и есть недостатки:
- CryoPID: кажется мертвым, обещая с 2005 года включить поддержку экрана
- DMCTP: есть проблемы с setuid(), у меня не работает (признаюсь, я не очень старался)
- какой-то скрипт пытается воссоздать сессию с нуля; Вы все еще теряете свою историю, и я думаю, что переменные окружения также установлены неправильно (и когда я пытался, это не вызывало все сессии)
Может, кто-нибудь знает какой-нибудь лучший процесс с морозильной камерой? Это кажется наиболее перспективным способом.
3 ответа
Нет способа сохранить сеанс экрана так, как вы хотите. То, что я сделал, было следующей лучшей вещью: скриптовал autossh для подключения к моим серверам и настраивал мою установку так, как мне нравится.
Любить это.
Локальное соединение отключено, я жду, оно возвращается и работает (я использую вложенные экраны). Сервер отключен или перезагружен, я жду и вернусь в положение по умолчанию. Это дает мне чувство преемственности, которое я желал.
Во всяком случае, я задал этот точный вопрос несколько лет назад в списке экрана.
Резюме: не ищи вечную жизнь за экраном. Вместо этого учитесь воскресать.
Это основная часть конфигурации.screenrc:
Есть пример, rscreen, в пакете autossh, который я изменил в программе econnect.
Параметр --esc должен установить удаленное экранирование на что-то другое (мое экранирование `)
#add much much more scrollback
defscrollback 10000
# make some default windows
screen -t ADMIN 1
chdir /Users/chiggsy/Sites/
screen -t SITES 2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS 4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5 /Users/chiggsy/bin/econnect --host host.example2.com --port 505000 --esc g --user invictus
screen -t ROOT 0 sudo su -m
Смотрите: http://skoneka.github.io/screen-session/
Available screen-session modes:
----
save - save Screen ( and VIM ) session
load - load session
ls - list saved sessions
----
dump - print detailed informations about windows in the session
group - move windows to a group
layoutlist - display a list of layouts
layout-checkpoint - record a snapshot of the current layout.
layout-history - display saved snapshots of the current layout
layout-redo - load a snapshot of the current layout,
layout-undo - load a snapshot of the current layout,
layout-zoom - zoom into and out of a region
kill - send SIGTERM to last the process started in a window
kill-zombie - kill all zombie windows in the session
kill-group - recursively kill all windows in a group
manager - sessions manager (screenie like) but featuring session
preview in a split window
nest-layout - copy a layout to the current region
new-window - start a new Screen window in the same working directory
on the position next to the current window
name - get or set the sessionname
regions - display a number in every region (like tmux display-panes)
renumber - renumber windows to fill gaps
subwindows - recursively print windows contained in groups
При сбое сервера тот же вопрос получил одну подсказку, которая здесь отсутствует: используйте tmux
с tmux-resurrect , который является:
Восстановление [с]
tmux
среда после перезагрузки системы.
Что это может восстановить для вас:
- все сеансы, окна, панели и их порядок
- текущий рабочий каталог для каждой панели
- точное расположение панелей в окнах (даже при увеличении)
- активный и альтернативный сеанс
- активное и альтернативное окно для каждой сессии
- окна с фокусом
- активная панель для каждого окна
- "сгруппированные сессии" (полезная функция при использовании tmux с несколькими мониторами)
- программы, работающие на панели! Подробнее в восстанавливающих программах док .