linux - 如何通过将其内存存储到磁盘并稍后恢复它来在 Linux 中 "hibernate"进

是否可以在 linux 中“休眠”进程? 就像笔记本电脑中的“休眠”一样,我会将进程使用的所有内存写入磁盘,释放 RAM。然后稍后,我可以“恢复进程”,即从内存中读取所有数据并将其放回 RAM,然后我可以继续我的进程吗?

最佳答案

我曾经维护CryoPID ,这是一个完全符合您所说的程序。它将程序地址空间的内容、VDSO、文件描述符引用和状态写入一个文件,以后可以重建该文件。 CryoPID 在 Linux 本身没有可用的钩子(Hook)时启动,并且完全在用户空间工作(实际上,它仍然可以工作,具体取决于您的发行版/内核/安全设置)。

问题是(确实)套接字、待处理的 RT 信号、大量 X11 问题、glibc 缓存 getpid() 实现等等。在 Bernard 离开后,随机化(尤其是 VDSO)对于我们中的少数人来说是无法克服的。然而,它很有趣,并成为了几篇硕士论文的主题。

如果您只是在考虑一个可以保存其运行状态并直接重新启动到该状态的程序,那么从程序本身中保存该信息就更容易了,也许是在服务信号时。

关于linux - 如何通过将其内存存储到磁盘并稍后恢复它来在 Linux 中 "hibernate"进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134771/

相关文章:

python - 使用 IPython 逐步调试

python - Pandas 用空白/空字符串替换 NaN

mysql - MySQL 服务器和 MySQL 客户端有什么区别

linux - 为什么人们使用 tarball?

linux - 如何使用 strace 跟踪子进程?

python - 如何在 Python 中创建对象的副本?

linux - SIGINT 与 SIGTERM、SIGQUIT 和 SIGKILL 等其他终止信号

python - 使用 pandas 绘制相关矩阵

python - 使用 argparse 需要两个参数之一

javascript - 即使没有其他进程阻塞该端口,Node.js 应用程序也无法在端口 80 上