Gibt es eine Möglichkeit, einen laufenden Prozess auf die Festplatte zu kopieren, um ihn später wiederherzustellen?

4146
Sijin

Normalerweise arbeite ich mit vielen Visual Studio-Instanzen, die für verschiedene Projekte geöffnet sind. Ich habe mich gefragt, ob es einen Weg gibt, einen laufenden Prozess auf die Festplatte zu kopieren, anstatt ihn zu schließen, sodass ich ihn in demselben Zustand wie zuvor öffnen kann schnell.

Ich habe eine Menge freien Speicherplatz, also würde es mir nichts ausmachen, den gesamten Prozess-Snapshot zu speichern, wenn ich dadurch die Zeit sparen würde, die Lösung zu öffnen und auf das Laden der Projekte zu warten.

10
+1: Interessante Idee! (Dies ist natürlich genau das, was der Manager des virtuellen Speichers bei Bedarf automatisch für Sie tun möchte.) Andy vor 14 Jahren 0
FWIW, so etwas ("unexec", basierend auf einem Core-Dump) ist traditionell Bestandteil des Build-Prozesses für Emacs auf UNIX-Systemen. Siehe beispielsweise http://www.xemacs.org/Architecting-XEmacs/unexec.html coneslayer vor 14 Jahren 2
Das wurde speziell für Emacs entwickelt? Nein. Ich frage mich, ob eine Universalversion geschrieben werden könnte. Andy vor 14 Jahren 1
Ich habe schon lange nach so etwas gesucht. Es wäre besonders hilfreich, wenn Sie einen Video-Encoder anhalten möchten! Breakthrough vor 14 Jahren 0
Es scheint so, als gäbe es so etwas für Linux linux.org/apps/AppId_2488.html Allerdings denke ich, dass das Problem offene Datei-Handles, Netzwerk-Sockets usw. sein wird, was dies zu einem nicht trivialen Problem macht Sijin vor 14 Jahren 1
Ja, um den Zustand angemessen wiederherzustellen, müsste man wissen, wie das Programm funktioniert. Der Prozess geht beispielsweise davon aus, dass Dateien, die gesperrt wurden, nach der letzten Prüfung nicht geändert werden. Wenn Sie den Prozess abbrechen, sodass die Sperre nicht mehr vorhanden ist und die Datei dann durch etwas anderes geändert wird, wird das Programm durch das Wiederherstellen des Griffs und der Sperre später in einem ungültigen Zustand verlassen. Oder, einfacher zu verstehen, ist ein Netzwerk-Socket in den Zustand gelangt, in dem er sich mit einem Server unterhielt. Ihr Wiederherstellungs-Tool müsste wissen, wie der Socket in den Status gelangt ist, in dem er sich befindet - möglicherweise mit TLS unmöglich binki vor 8 Jahren 0

3 Antworten auf die Frage

3
Incognito

I do this using VirtualBox from Sun for separating projects. It's also handy because you can take snapshots.

The drawback is you need to put an entire OS on there.

Ja, ich verwende VirtualBox für Momentaufnahmen auf Betriebssystemebene. Hier entstand die Idee für einen Momentaufnahme auf Anwendungsebene. Es scheint, als gäbe es so etwas für Linux http://www.linux.org/apps/AppId_2488.html Allerdings denke ich, dass das Problem offene Datei-Handles sein wird und solche, die dies zu einem nicht-trivialen Problem machen. Sijin vor 14 Jahren 2
1

Mit dem ProcessExplorer von MS Sysinternals können Sieeinen Prozess anhalten . Hilft / erledigt das die Arbeit?

Leider nicht ... Ich wollte den Prozess aus dem Speicher nehmen, um ihn freizugeben, und nicht einfach die Anwendung anhalten. Dies ist zwar ein sehr nützliches Programm für CPU-intensive Anwendungen, die möglicherweise angehalten werden müssen! Breakthrough vor 14 Jahren 4
Durch das Suspendieren eines Prozesses werden alle anderen Prozesse eingefroren, die dazu führen, dass einige Windows-Nachrichten an ihn gesendet werden. Es kommt daher vor, dass einige Prozesse gerne Nachrichten an andere Prozesse senden, und andere Prozesse sind gerne Ziele für solche Broadcasts. Das Anhalten einiger Prozesse ist daher harmlos, aber in anderen Fällen kann dies die Arbeit mit dem Computer beeinträchtigen. Und noch etwas. Einige Prozesse werden eingefroren, nachdem sie nach einem lang andauernden Suspend-Vorgang wieder aufgenommen wurden, und nehmen Ihre gesamte CPU in Anspruch, um die verlorene Zeit zu kompensieren, die etwas sehr Kluges errechnet: P Roland Pihlakas vor 11 Jahren 0
Es gibt auch ein Befehlszeilen-Dienstprogramm ** pssuspend ** von MS Sysinternals. Sie finden es dort: http://technet.microsoft.com/en-us/sysinternals/bb897540. Es ist Teil eines PsTools-Pakets: http://technet.microsoft.com/de-de/sysinternals/bb896649. Dort finden Sie beispielsweise auch ein ** pskill ** -Tool, das beispielsweise nach dem Wiederaufnahme eines Prozesses recht praktisch ist und es wird viel zu aufgeregt. Roland Pihlakas vor 11 Jahren 0
@Breakthrough aber wenn der Prozess angehalten wird, wird der Speicher aufgegeben (da andere Programme Speicher verwenden, wird dieser ausgelagert), ohne dass er versucht hat, ihn zurückzufordern, bis Sie ihn wieder aufnehmen. Dies ist wirklich der nächstliegende / sicherste Weg, um das zu bekommen, was Sie wollen - ein ausgelagertes ausgehängtes Programm ist im Grunde ein sicher gespeicherter Schnappschuss davon, nur einer, der beim Neustart verloren geht. binki vor 8 Jahren 1
-1
Simon D.

You can use WinDbg (Microsoft tool) to create a dump of the current state of a windows machine. Usually this is used to analyse problems, but maybe it could serve your needs as well. Search for keywords WinDbg and dump for further information, maybe there is even an option to dump only single processes.

Die Dump-Datei kann nicht zum Wiederherstellen des Prozesses verwendet werden. user2284570 vor 8 Jahren 0