Чи є спосіб зробити сеанс "Екран" пережити перезавантаженням?


25

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

Я використовую Ubuntu Server 10.04 (Lucid Lynx), якщо це має значення.

У мене відкрито кілька сеансів через екран. Коли машина перезавантажить всі ці сеанси втрачені, і мені доведеться їх знову відкрити. Я хотів знайти спосіб зберегти ці екранні сеанси.


що ви намагаєтесь зробити? чи хочете ви зберегти історію чи все, що працює на екрані?
Марсель G

1
Не вдалося б зробити цю поразку метою перезавантаження?
Брайан Ноблеуч,

що ви маєте на увазі під "сеансами"? Ви маєте на увазі, що у вас є ssh-з'єднання з іншими хостами в декількох вікнах екрана? Якщо це саме те, що ви маєте на увазі, тоді, щоб написати. Потім, коли ви запускаєте екран, всі ssh-з'єднання автоматично запускаються. Ви навіть можете запустити його з rc.local (трохи хитро, тому що його потрібно запустити з su - yourusername), тож після входу в систему ви можете знову приєднати сеанс запущеного екрана.
natxo asenjo

1
що ще важливіше, чому ви весь час перезавантажуєтесь? Сервери Unix - це не сервери Windows, вони розроблені для великих часів, відомо, що машини мають періоди років (без патчів безпеки ядра). Якщо ви перезавантажуєтесь завдяки патчам безпеки ядра, то подивіться на щось на зразок ksplice.
Двірник Unix

Відповіді:


16

Перш за все, давайте уточнимо пару важливих речей:

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

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

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

Ще одна можливість (знову-таки, чи корисно це для вас залежить від ваших обставин) - запустити машину з екраном на VM. Припустимо, це віддалений фізичний сервер, і його потрібно перезавантажити, але він має гостьову ОС на (наприклад) VMware. Ви можете призупинити роботу гостьової ОС та запустити її знову після апаратного перезавантаження. Все залежить від того, для чого вам потрібно перезавантажити, що не було зазначено, і який контроль ви маєте над машиною, і чи готові ви вирішити цю проблему.

Рішення EASY не існує, і можливо, жодне з цих рішень не підійде для вас. Але найкраща удача.

Якщо ви входите в багато машин, може здатися занадто сильним болем запустити екран на всіх віддалених машинах окремо, і це так. У цьому випадку корисно мати проміжний екран із запущеною машиною, який може мати багато вікон екрана, кожне з яких увійшло до іншої віддаленої машини. Поки проміжна машина залишається в стані, ви можете перезавантажити свій власний локальний автомат (або запакувати його в сумку і забрати додому на ніч, або що завгодно), і екран продовжує працювати на проміжному верстаті. (І очевидно, якщо будь-яка з віддалених машин вийде з ладу, ви втратите зв’язок із цією машиною, але решта ваших сеансів на екрані добре.)

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

Але є ще один дещо перспективний варіант, який варто вивчити. (Чи буде це працювати для вас, значною мірою залежить, що саме ви намагаєтеся зробити.) Перевірте це на сайті github.com: https://github.com/skoneka/screen-session/tree/master/ScreenSession/


+1 для cryoPID, про це не знав!
Двірник Unix

ScreenSession виглядає цікаво, з його опису це саме те, що я хотів
Сергій G

5

У деяких рідкісних обставинах це можливо (див. CryoPID або CryoPID2 ), але в цілому це важко, тому не можна цього робити.


Посилання розірвано.
kasperd

4

Замість екрана використовуйте невеликий VM Virtualbox і працюйте всередині цього. Тоді ви можете просто перезимувати, перезавантажити хост, а потім розбудити VM назад (так само, як закрити та повторно відкрити кришку ноутбука). Підключення SSH до віддалених хостів, ймовірно, не збережуться цим методом, я не думаю, що це було б можливо гарантувати.


Насправді я хотів би оновити свою відповідь на tmux-resurrect
Гай

tmux-resurrect виглядає як дуже хороше рішення.
серв-інк


1

У всьому цьому сам Екран досить маргінальний. Не "Екран" ви хочете "зберегти", чи не так ?, а оточення в межах різних сеансів екрану, якими б вони не були.

Здається, ви припускаєте, що збереження сеансу на екрані охоплюватиме процес SSH всередині нього і всілякі. Те, що працює всередині екрана, взагалі не стосується екрана, і це речі, які важко було б "зберегти" ... все, що насправді означало б, якби це було реалізовано.

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