Збережіть повний стан сеансу екрану GNU


32

Чи можна зберегти "стан" вікна екрана GNU (або просто стандартну оболонку), щоб я міг перезавантажити все після перезавантаження:

  • Кількість відкритих снарядів
  • Назва кожної оболонки
  • Поточний каталог кожної оболонки
  • Історія кожної оболонки
  • Якщо можливо, їх змінні середовища

Відповіді:


19

Зберегти повний сеанс на екрані не представляється можливим.

Що ви можете зробити, це створити належне .screenrc який налаштує деякі речі після перезавантаження системи.

Ось кілька коментарів до перелічених вами речей:

  • Кількість відкритих снарядів
  • Назва кожної оболонки
  • Поточний каталог кожної оболонки

Я використовую щось подібне в своєму, .screenrcщоб відкрити деякі конкретні оболонки при запуску:

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

Ви отримаєте рядок між "" як ваше ім'я вікна та командою після того, як ім'я буде виконано у вашій оболонці за замовчуванням. Включіть будь-який потрібний вам сценарій, наприклад, змініть певний каталог і відкрийте деякі журнали.

  • Історія кожної оболонки

Чи замислювалися ви над тим, щоб поділитися історією снарядів протягом своїх сеансів? ІМХО це значно полегшує справи. У ЗШ це робиться з setopt SHARE_HISTORYвашим.zshrc

  • Якщо можливо, їх змінні середовища

Якщо ви дійсно потребуєте цього і не хочете жодних компромісів, ви можете подумати про сценарій оболонки, який зчитує поточний стан екрану, зберігає кількість оболонок, змінні середовища тощо і додає цю інформацію до сценарію запуску. покликаний вашим .screenrc. Для мене це не варто докладати зусиль, оскільки я ціную чисте середовище після перезавантаження, якщо зможу налаштувати вікна за замовчуванням для екрана.


Дякуємо за ваші пропозиції. Я знайшов спосіб поділитися своєю історією на bash (не такий простий, як з zsh), тому у мене є один потік команд, який зберігається. Щодо .screenrc, я мав би подумати про це. На жаль, здається, ви можете виконувати лише певні сценарії (команди типу "cd" не працюють), але це повинно бути добре. Я не проти змінні середовища, якщо я можу ініціалізувати оболонку зі скриптом.
Бартелемі

cd - це вбудована функція вашої оболонки, команда cd не мала б сенсу поза "shell" :-) Але ви можете просто включити скрипт, який містить cd / foo / bar після шебанга. Тоді ваша нова оболонка зміниться в цей каталог.
відлуння

так, я розумію цю відмінність, я просто думав, що команди якимось чином передаються в оболонку, а потім виконуються в оболонці. Але у мене немає проблем із написанням сценаріїв ініціалізації :-) Загальна історія була надзвичайною ідеєю btw, мені це дуже подобається.
Бартелемі


2

Існує інструмент для заморожування стану процесу, який називається кріопід . Однак в даний час він не працює з екраном GNU, оскільки він не підтримує відновлення ієрархії підпроцесів. Вони заявляють, що хочуть цього досягти в майбутньому, але наразі проект здається не надто активним. Тим не менш, ви можете відстежити їх прогрес.


0

Я будував подібну річ на соніалі років тому. Навіть не пов’язані з екраном; це було пов'язано з сеансом. "якщо $ TTY = що завгодно". echox має правильну ідею.

порада: якщо ви робите це на декількох машинах, визнайте, що кожна машина заслуговує власного визначення того, що потрібно робити під час входу в систему, а не того, щоб усі були однаковими для вашого nfs, встановленого вдома чи подібного.

HTH, -pbr

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.