Существует ли способ заставить терминальные сеансы сохраняться через перезагрузку?

OS X имеет это. Идеально я хотел бы, чтобы перезагрузка появилась, как будто этого никогда не происходило от POV терминала (давайте проигнорируем удаленные сеансы и примите 0 фоновых процессов на данный момент). Значение, я хотел бы видеть stdin, stdout, stderr (т.е. scrollback) история на каждой из моих терминальных вкладок.

Примечание: Это не об истории удара. Это о сохранении терминальных сеансов между перезагрузками.

2
задан 17 June 2017 в 00:26

2 ответа

Нет, по крайней мере, в gnome-terminal и другой VTE- основанные эмуляторы это не возможно неявным и удобным способом.

(Можно, конечно, явно пройти все вкладки перед перезагрузкой, "Выбор Все" и вставка копии содержание в файлы, и просматривает те файлы с некоторым средством просмотра после перезагрузки. Если я понимаю Вас, это не то, что Вы ищете. Кроме того, цвета и другое форматирование были бы потеряны.)

VTE, виджет эмуляции терминала позади gnome-terminal и много других эмуляторов терминала хранят большую часть scrollback содержания (не последние биты, хотя) во временных файлах под /tmp по умолчанию. Основные проектные решения, которые предотвращают выполнение, что Вы ищете:

  • Эти файлы являются несвязанными, прямо будучи созданным. Это - то, так, чтобы они были автоматически удалены (и дисковое пространство освобождено), даже если эмулятор терминала выходит грязно по любой причине. Для сохранения их они должны быть связаны назад с деревом файловой системы (я не знаю, возможно ли это), или скопированный в другой файл (который является медленным действием, если scrollback является большим, уже не говоря о надлежащей обработке потенциально исчерпывающий дисковое пространство).

  • Файлы находятся под /tmp который вытерт многими дистрибутивами на перезагрузку. Должно быть выбрано другое, персистентное местоположение вместо этого, или некоторое сотрудничество необходимо со сценариями начальной загрузки.

  • Эти файлы шифруются (с VTE версия 0.40) для преодоления проблемы конфиденциальности утечки данных в случае, если кто-то получает доступ к диску. Ключ шифрования только доступен в gnome-terminalпамять. Для этих файлов для сохранения любой слой шифрования должен быть пропущен (возвращение старых проблем конфиденциальности), или ключи должны быть помещены на диск по крайней мере временно на время перезагрузки (... er, пока тот пользователь не входит в систему снова и запускает gnome-terminal снова... не звучит слишком много лучше). Выполнимый, только если Вы не заботитесь о конфиденциальности, или если файловая система, как гарантируют, будет зашифрована.

Существуют другие меньшие проблемы, которые будут обращены также, например, сбрасывание неполных блоков этих файлов, которые содержат последние биты scrollback данных.

Я надеюсь, что мог обрисовать в общих чертах некоторые проектные решения VTE взял, которые предотвращают выполнение, что Вы ищете. Я не вижу, как Ваш запрос мог быть обращен при хранении текущих целей дизайна также. Возможно, существует другой эмулятор терминала, который делает то, что Вы ищете, по-видимому, жертвуя частью из VTEфункции;Я не знаю.

1
ответ дан 2 December 2019 в 04:48

Я предлагаю использовать очень полезное screen инструмент. Это определенно стоит изучить. При повторении, таким образом, ответа я поставил другой вопрос:

Посмотрите в .screenrc, можно инициировать окна по умолчанию с пользовательской командой, таким образом, Вы могли восстановить сессии с помощью различных .screenrc файлов, если Вы хотите восстановить различные сессии. screen -t .... См. Экранное Руководство gnu.org - файлы запуска

Один хороший способ наличия терминальных сеансов, которые сохраняются, состоит в том, чтобы выполнить 'экранную' сессию на сервере. 'Экранная' сессия дает Вам несколько окон на том сервере, где Вы можете быть зарегистрированы к другим машинам или что бы то ни было. У Вас может быть несколько 'экранных' сессий, работающих на сервере. Можно разъединиться и снова соединиться с сессиями, в которых Вы нуждаетесь. 'экран' является олдскульной клавиатурой командной строки, но определенно стоящий изучения и играть с изучить, как это работает. Это имеет несколько больших преимуществ:

  • легкий установить, работает на любом Unix (или cygwin), никакая необходимая графика (помимо терминальной текстовой графики)
  • дает персистентные оконные терминальные сеансы (как долго, поскольку сервер не перезагружается),

Быстрый запуск экрана * *

Прочитайте руководство: экранное руководство пользователя gnu.org

  • экран - экран Run для создания новой сессии просто
  • экран-ls - перечисляет экранное выполнение сессий
  • экранируйте-r 20229.pts-2.bangor - повторно прикрепляют к сессии

* символ экрана ESCAPE по умолчанию является Ctrl-a *, если некоторый сумасшедший выполняющий мертвую петлю летчик не изменил его в .screenrc, например, "Escape ^Zz" для людей, которые не оценивают управление фоновой обработкой процесса. Для получения реального Ctrl-a к терминалу (goto начало строки) при выполнении на экране затем просто делают Ctrl-a Ctrl-a.

  • ESCAPE c - создает новое экранное окно
  • ВЫЙДИТЕ 0 (или 1 2 3 4 5 6 7 8 9) - переключаются на окно 0 (или 1 2..)
  • ВЫЙДИТЕ из p или ВЫЙДИТЕ из n - переключаются на предыдущее или следующее окно
  • ESCAPE "-список окна
  • ESCAPE h - показывает экранную справку

Полностью здесь по другому вопросу я вставил пример экранной страницы справки, использования командной строки и примера .screenrc:

Эмулятор терминала с “функцией” сессии восстановления как Терминал Mac

0
ответ дан 2 December 2019 в 04:48

Другие вопросы по тегам:

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