有没有一种方法可以将正在运行的进程快照到磁盘上以便稍后将其还原?


11

我通常会使用许多开放给不同项目的Visual Studio实例,我想知道是否有一种方法可以将正在运行的进程快照/休眠到磁盘而不是关闭它,以便我可以将其打开时的状态很快。

我有大量的可用磁盘空间,因此如果可以节省我打开解决方案并等待项目加载的时间,则不介意保存整个过程快照。


+1:有趣的主意!(当然,这正是虚拟内存管理器会在需要时自动为您执行的操作。)
Andy 2010年

2
FWIW,类似这样的东西(基于核心转储,“ unexec”)传统上是UNIX系统上Emacs构建过程的一部分。参见,例如,xemacs.org / Architecting
XEmacs /

1
那是专为emacs设计的,不是吗?我想知道是否可以编写通用版本。
安迪2010年

我已经在寻找类似的东西已有一段时间了。如果您想暂停视频编码器,这将特别有帮助!
突破

1
Linux似乎有类似这样的东西linux.org/apps/AppId_2488.html但是,我认为问题将是打开的文件句柄,网络套接字等,这使这成为一个不平凡的问题
Sijin

Answers:


2

我使用Sun的VirtualBox来分离项目。这也很方便,因为您可以拍摄快照。

缺点是您需要在其中放置整个操作系统。


3
是的-我将VirtualBox用于OS级别的快照,这就是我想到应用程序级别的快照的地方。似乎Linux会有类似的东西linux.org/apps/AppId_2488.html 但是,我认为问题将是打开文件句柄之类的,这使这成为一个不小的问题。

0

ProcessExplorer MS的Sysinternals让你挂起一个过程。这对工作有帮助吗?


5
不幸的是,不是...我想从内存中取出进程以释放它,而不仅仅是暂停应用程序。尽管这对于CPU密集型应用程序是一个非常有用的程序,但您可能需要暂停一下!
突破

挂起进程可以有效地冻结所有其他向其发送Windows消息的进程。碰巧,某些进程确实喜欢向其他进程发送消息,而某些进程喜欢成为此类广播的目标。因此,挂起某些进程是没有害处的,但在其他情况下,这会干扰您在计算机上的工作。还有一件事。从长期暂停中恢复后,某些进程将冻结,并占用所有CPU来弥补所有丢失的时间,从而计算出非常聪明的东西:P
Roland Pihlakas

MS Sysinternals 还提供了一个pssuspend命令行实用程序。您可以在那找到它: technet.microsoft.com/en-us/sysinternals/bb897540。它是PsTools程序包的一部分:technet.microsoft.com/zh-cn/sysinternals/bb896649在其中,您还可以找到例如pskill工具,例如,在恢复过程后该工具非常方便,并且碰巧变得太激动了。
罗兰·皮拉卡斯

1
@Breakthrough,但是如果该进程被挂起,它将放弃内存(因为其他程序利用内存,它们将导致该内存被调出),而不会尝试回收它,直到您恢复它为止。这实际上是获得所需内容的最接近/最安全的方法-换出的暂停程序基本上是该程序的安全存储的快照,只是重新启动后丢失的快照。
宾基

-1

您可以使用WinDbg(Microsoft工具)来创建Windows计算机当前状态的转储。通常,它用于分析问题,但也许也可以满足您的需求。搜索关键字WinDbg并转储以获取更多信息,甚至可以选择仅转储单个进程。


转储文件不能用于还原过程。
user2284570
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.