Зробіть екран GNU вижити перезавантаженням


18

Я багато використовую екран GNU. Мені дуже прикро, що кожного разу, коли перезавантажувати сервер, я втрачаю всі свої сеанси (навіть якщо знаю заздалегідь, мені потрібно все налаштувати заново).

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

  • CryoPID : начебто мертвий, обіцяючи з 2005 року включити підтримку екрану
  • DMCTP : має проблеми з setuid (), не працює для мене (я визнаю, я не дуже старався)
  • якийсь сценарій, який намагається відтворити сеанс з нуля; ви все ще втрачаєте свою історію, і я думаю, що також змінні середовища не встановлені правильно (і коли я намагався, це не відображало всіх сеансів)

Можливо, хтось знає якийсь кращий морозильник для процесів? Це здається найбільш перспективним способом.


Можливо, вам слід перезимувати замість перезавантаження :-) Я пам’ятаю, що використовував DMCTP дуже давно, і він спрацював (IIRC, але я не впевнений ...)
лень

1
Ну, у більшості випадків його оновлення ядра або апаратні замінники, які змушують перезавантажити. (Що мені взагалі не до вподоби ...) - DMCTP: Буде цікаво, як змусити його працювати без екрану перекомпіляції (як це пропонується в Інтернеті).
fuenfundachtzig

1
Я використовую tmux замість екрана і мені легше писати сценарії сеансу. Це не "збереже" ваш сеанс, але ви можете легко надсилати команди tmux, щоб зробити свій макет і надіслати клієнтові "натискання клавіш", щоб ви могли змінити каталог і запустити програми, якщо це потрібно. Я впевнений, що ви можете це зробити і на екрані, але це просто здається простіше з tmux

Відповіді:


13

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

Любіть це.

Локальне підключення, я чекаю, він повернеться назад і там моя робота (я використовую вкладені екрани). Сервер вниз або перезавантажений, я чекаю, і я повернуся до свого типового положення. Це дає мені відчуття наступності, якого я бажав.

У всякому разі, я поставив це точне запитання років тому в списку екранів.

Короткий зміст: Шукайте не вічне життя за екраном. Натомість навчіться воскрешати.

Це м'ясо .screenrc config:

У пакеті autossh, який я змінив у програму econnect, є приклад, rscreen.

Параметр --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

2

Дивіться: 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 

2

У серверній помилці те саме запитання отримало один підказку, якої тут немає: використання tmuxз tmux-resurrect , а саме:

Відновити tmuxсередовище [s] після перезавантаження системи.

Що це може відновити для вас:

  • всі сесії, вікна, панелі та їх порядок
  • поточний робочий каталог для кожної області
  • точні макети панелі у вікнах (навіть при збільшенні масштабу)
  • активний та альтернативний сеанс
  • активне та альтернативне вікно для кожного сеансу
  • windows з фокусом
  • активна панель для кожного вікна
  • "згруповані сеанси" (корисна функція при використанні tmux з кількома моніторами)
  • програми, що працюють в межах панелі! Більш детально у програмі відновлення док .
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.