Назад | Перейти на главную страницу

Есть ли способ сделать так, чтобы сеанс «Экран» пережил перезагрузку?

Я использую Экран утилита и хотели бы сохранить сеанс при перезагрузке компьютера. Если это невозможно, вы можете порекомендовать другие альтернативы Экран что позволило бы сохранять сеансы между перезагрузками.

Я использую Ubuntu Server 10.04 (Lucid Lynx), если это важно.

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

Прежде всего, проясним пару важных вещей:

  1. Сколько машин задействовано? Другими словами, вы подключаетесь к удаленному компьютеру или все находится на вашем локальном компьютере?
  2. Если задействована удаленная машина, какая машина перезагружается: сервер или клиент?

Если задействована одна машина или сервер перезагружается, то вы в основном повезло.

Если вы входите в систему на удаленном компьютере, но вам нужно перезагрузить локальный компьютер, это не проблема, если вы запускаете screen на удаленном компьютере, а не на локальном. Я понимаю, что это довольно очевидно для любого опытного (даже немного опытного) пользователя экрана, но я упоминаю об этом на всякий случай, если это может быть полезно.

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

ЛЕГКОГО решения не существует, и, возможно, ни одно из решений вам не подойдет. Но удачи.

Если вы входите в систему на многих машинах, запускать screen на всех удаленных машинах по отдельности может показаться слишком сложной задачей, и это так. В этом случае полезно иметь промежуточный рабочий экран машины, который может иметь много окон, каждое из которых зарегистрировано на другом удаленном компьютере. Пока промежуточная машина работает, вы можете перезагрузить свою локальную машину (или упаковать ее в сумку и забрать домой на ночь, или что-то еще), и screen продолжит работу на промежуточной машине. (И, очевидно, если какая-либо из удаленных машин выйдет из строя, вы потеряете соединение с этой машиной, но с остальными сеансами экрана все в порядке.)

Но, скорее всего, вы имеете в виду либо удаленную машину, либо единственную машину, которая перезагружается, и в этом случае нет простого способа сделать это. Поначалу CryoPID звучит многообещающе, но на его веб-сайте говорится, что он не работает для экрана.

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

В некоторых редких случаях это возможно (см. CryoPID или CryoPID2), но в целом это сложно, поэтому невозможно.

Вместо использования экрана используйте небольшую виртуальную машину Virtualbox и работайте внутри нее. Затем вы можете просто перевести его в спящий режим, перезагрузить хост, а затем снова разбудить виртуальную машину (как при закрытии и повторном открытии крышки ноутбука). SSH-соединения с удаленными хостами, вероятно, не будут сохраняться этим методом, я не думаю, что это можно гарантировать.

Ты не можешь. Уж точно не на одной машине

Во всем этом сам экран довольно маргинален. Это не экран, который вы хотите «сохранить», не так ли? А среды в различных сеансах экрана, какими бы они ни были.

Кажется, вы предполагаете, что сохранение сеанса Screen будет охватывать процесс SSH внутри него и все виды. То, что работает внутри Screen, вовсе не является его делом, и это вещи, которые было бы трудно «спасти» ... что бы это ни значило, если это возможно.