Существуют ли программы для сохранения и восстановления состояния приложений? Как гибернация, но после обычного выключения

Я не знаю, как назвать их правильно. Возможно, менеджеры состояния приложений. Сейчас поясню.

Предположим, человек работает с несколькими приложениями, например, это:

  • фотошоп, в котором открыто два макета;
  • редактор кода / IDE, в котором открыто несколько файлов;
  • какой-то текстовый процессор, например, MS word
  • табличный процессор, например, MS Excel.

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

Итак вопрос, есть ли софт, с помощью которого можно сохранить состояние всех открытых приложений на жёсткий диск: с последующим открытием этих приложений при запуске сохранённого файла? Иначе говоря, если не ошибаюсь, создать слепок текущего состояния системы? То есть, запустил ранее сохранённый с состоянием системы и у тебя открылись все приложения, работавшие на момент создания слепка. Я знаю, что так можно делать на виртуальных машинах, а есть ли что-то без виртуальных машин?

Мне просто интересно, однако, такая программа бы не помешала никому, уверен.

Гибернация вместо выключения )

Да я знаю про гибернацию. А вот чтобы именно с выключением?

Если не гибернация, а именно выключение. Тогда система автоматом закрывает все процессы и дает команду железке на отключение. При повторном запуске ядро системы загружается начисто, плюс подгружается то что в автостарте.
При гибернации сохраняется состояние системы и всех открытых приложений на HDD , затем команда железке на отключение. При последующем старте возобновляется сохраненный образ.

Это вряд ли возможно на уровне обычной программы (или даже драйвера и т.п.), это должна быть фича ОС, как гибернация.
В ВМ же это работает потому что оно просто всё содержимое памяти восстанавливает.

Но не в ВМ это дополнение к гибернации очень мало когда будет полезно, разве что для тех кто дуалбутится между разными ОС.

Даже для перезагрузки после обновлений ОС не подходит, потому что тогда обновления не применятся (+ скорее всего будут проблемы, файлы же заменены).

Ну и обычно перезагружаться всё равно надо хотя бы раз в неделю, чтобы спастись от глюков и тормозов.
Кстати, это чот вообще печаль в современных ОС (кроме каких-нибудь легких ДЕ в линуксах), по-моему в вин 7 лучше было :nauseated_face:. Что в вин 10, что в Gnome через какое-то время начинают тормозить меню, появляться разные тормоза, зависания и т.д. Но Гном хоть можно отдельно от ОС рестартнуть.

До сих пор вынь-7, которую не обновлял.
На ноуте обычно можно вместо гипернации сон.

В принципе, если приложение через отдельную ВМ, оно получается практически “вечное”, если, конечно, изначально и оно и ВМ стабильны?
Правда, почти все крупные обычно рано или поздно начинают глючить, баги там есть.

Памяти не хватит ) И переключаться неудобно, никаких альт-табов и драгндропов.

И если винда, то запарят обновляться все ВМ.
Ну и по идее нужна отдельная лицензия на каждую ВМ. :happymerchant:

И не все приложения хорошо работают в ВМ, например, если нужна видеокарта. Можно прокинуть ее в некоторых ВМ, но тогда нужно более одной видеокарты (1 хосту + количество_вм_где_она_нужна).

…что вроде бы даже теоретически не особо возможно, по крайней мере на винде и с NTFS:

https://superuser.com/questions/1217862/make-hibernate-data-persistent-windows-7

NTFS is highly state dependent. The filesystem driver keeps a bunch of metadata about the current state of low-level NTFS data structures in RAM (e.g. block pointers to open handles, cache data, journal rewind position, clean vs. dirty RAM pages for loaded blocks, copy-on-write status, etc).

When you hibernate, all of that RAM is copied to the hibernation file and the full hibernated state must remain consistent between reboots. If even a single byte of data changes on the hard drive between the time the hibernation state is saved and when it’s resumed, then the state is no longer consistent and the entire hibernation file is considered invalid. To act any differently would be as if two different operating systems had the volume mounted at the same time. They two would disagree about the condition of the filesystem and would walk all over each others’ accounting of it, causing severe filesystem corruption. This is why cluster storage file systems used in corporate SAN networks use a file system that is designed for this purpose. It’s just not possible with NTFS.

Even if you take an offline block-level backup of a hibernated system and restored it to an identical drive, it would still invalidate the hibernation state because the hardware GUID of the drive will have changed and that is also part of the state data.

The only exception to this rule is the HORM ( Hibernate Once, Resume Many) feature of Microsoft’s Enhanced Write Filter (EWF). This feature is only available on Windows Embedded versions and the Enterprise version of Windows 10. This allows you to hibernate the system once and resume from that hibernated state as many times as you want. The caveat with that feature, however, is that any changes made to the file system are silently redirected entirely to a RAM disk and are dumped every time the system is powered off, effectively making the whole filesystem read-only after that point.

А вот это вроде бы возможно, но естественно только если не трогать диски доступные в винде:

https://superuser.com/questions/419186/how-should-i-set-up-my-dual-boot-so-that-i-can-hibernate-the-secondary-os

If you want to hibernate and use a different OS while Windows is hibernated you must not put the Windows bootloader first.

If the Windows bootloader is first, the very first thing it does before showing the menu is check for a hibernated OS. If a hibernated OS is found, it will boot into it automatically and will not show you a menu to choose boot options from. If you force the menu (i.e. F8), the hibernation data will be deleted.

Now if GRUB is the MBR boot menu and is configured to chainload BOOTMGR or boot into Linux, you can hibernate Windows and boot into Linux - but if you mount the NTFS partition, most likely your hibernation will be lost (detected as corrupted). Basically, if you hibernate a machine, you must not touch any volumes that were mounted on that machine (i.e. any FAT32 or NTFS partitions assigned a drive letter in the hibernated OS).

Ridiculously important note: In the event that you mount (say, in Linux) a Windows partition while Windows is hibernated and you are unlucky enough that when you’re done with Linux and attempt to reboot into Windows, Windows does resume from hibernation (instead of erroring out, throwing away hibernation data and attempting a normal boot), you will most likely suffer catastrophic data loss to all Windows partitions as all filesystem-related structures will be out-of-sync between what Windows has loaded in the memory and what’s actually written on the disk.

Other than that, there’s no problem. Just install Windows, Ubuntu, and Fedora. Make sure the latter do not automatically mount Windows’ drives on startup, ensure GRUB is the main bootloader, and you should be able to do what you want.

Пока что не понимаю в чём проблема. Ведь когда идёт работа в ВМ, то слепок системы всё равно физически сохраняется на ЖД. Возможно, и вне ВМ можно сохранить содержимое ОЗУ на ЖД. Ведь при гибернации так же происходит. Так как ОЗУ — энергозависимое хранилище, данные при прекращении подачи электропитания теряются, и, чтобы их было возможно восстановить, они сохраняются на ЖД, что даже в определении термина “Гибернация” написано.

При чём тут файлы ОС? Ведь слепок никоим образом не касается. Да и потом, лично я вообще отключаю все обновления ОС, она у меня не обновляется. Проблем у меня нет от этого.

Я выключаю ПК / Ноутбук, например, на ночь или когда ухожу надолго.

Мне рассказывали, почему это происходит. Дело в том, что в линуксах, в отличие от Windows, хорошо организован сборщик мусора. На винде, получается, память забивается и не очищается. Возможно, на линуксах всё лучше.

Нов ведь вин10 и Gnome — это разные вещи. Первая — ОС, а вторая — графическая оболочка, так?

О каком виде слепков речь?
Вряд ли можно сохранить слепок памяти без диска, потом поработать с диском и восстановить слепок памяти.

Так а почему не гибернация?

Да, большинство тормозов, утечек, глюков там.
Просто в винде она прибита гвоздями )

Указатели внутри приложения потребуют виртуализации памяти? Если сохранять/загружать всю память целиком такой проблемы нет.

Это фигня по сравнению с изменением содержимого ЖД, даже просто при выключении ОС )
Ну и там тоже позиции и хэндлы.


В целом тут надо либо использовать обычную гибернацию, либо проблема не решаема.

Многие современные приложения умеют восстанавливать свою предыдущую сессию (переоткрыть файлы, вкладки, …).

Извиняюсь, не слепок, а снимок. Исказился термин в моей памяти. Такой же термин используется и в VMware Workstation:

Так никто и не говорит, что не надо использовать ЖД.

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

Нам как-то показывали в институте, что Windows можно запустить вообще без графической оболочки. Для того надо было внести кое-какие изменения в системные файлы.

А, ну хорошо. Это как раз связано в гибернацией. По сути гибернация и есть отключение питания ПК, но с сохранением сеанса на ЖД. Впрочем, ниже уже объяснили, что таких программ нет.

он сохраняет и диск, и память целиком.

https://www.vmware.com/support/ws4/doc/preserve_snapshot_ws.html

The snapshot captures the entire state of the virtual machine at the time you take the snapshot. This includes:

  • The state of all the virtual machine’s disks.
  • The contents of the virtual machine’s memory.
  • The virtual machine settings.

А вот заменить ее полностью на свою проблематично )

Можно переназначить действия кнопкам:
Кнопка включения\выключения - изменить с Завершение работы на Гибернация;
Закрытие крышки ноутбука привязать к Гибернация.
Или так не подходит?

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

Впрочем, можно использовать гибернацию, как решение задачи, да.