На самом деле невозможно сохранить весь сеанс экрана.
Что вы можете сделать, так это создать правильную программу, .screenrc
которая будет настраивать некоторые вещи после перезапуска системы.
Вот некоторые комментарии к вещам, которые вы перечислили:
- Количество открытых снарядов
- Название каждой оболочки
- Текущий каталог каждой оболочки
Я использую что-то вроде этого в моем, .screenrc
чтобы открыть некоторые конкретные оболочки при запуске:
## set the default shell
shell zsh
# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]
Вы получите строку между '' в качестве имени вашего окна и командой после того, как имя будет выполнено в вашей оболочке по умолчанию. Включите любой скрипт, который вы хотите, например, измените в определенном каталоге и откройте несколько журналов.
Вы когда-нибудь думали о том, чтобы поделиться историей снарядов во время ваших сессий? ИМХО, это делает вещи намного проще. В ZSH это сделано setopt SHARE_HISTORY
в вашем.zshrc
- Если возможно, их переменные среды
Если вам это действительно нужно и вы не хотите идти на компромисс, вы можете подумать о сценарии оболочки, который считывает текущее состояние экрана, сохраняет количество оболочек, переменные среды и т. Д. И помещает эту информацию в сценарий запуска. называется вашим .screenrc
. Для меня это не стоило бы усилий, потому что я ценю чистую среду после перезагрузки, если я могу настроить окна по умолчанию для экрана.
Я наткнулся на проект под названием screen-session . Это позволяет вам сохранять и перезагружать сеансы GNU Screen в некоторой степени.
источник
Существует инструмент для замораживания состояния процесса, называемый криопид . Однако в настоящее время он не работает с экраном GNU, так как не поддерживает воссоздание иерархии подпроцессов. Они заявляют, что хотят достичь этого в будущем, но в данный момент проект не кажется слишком активным. Тем не менее, вы можете отслеживать их прогресс.
источник
Я построил похожую вещь на солярисе много лет назад. Даже не связанные с экраном; это было связано с сессией. «если $ TTY = что угодно». У echox правильная идея.
Подсказка: если вы делаете это на нескольких машинах, знайте, что каждая машина заслуживает своего собственного определения того, что должно быть сделано, когда вы входите в систему, а не все одинаковые для вашего nfs, смонтированного / home или подобного.
HTH, -pbr
источник