2011-04-18 41 views
13

我想知道:有沒有一個系統調用,庫,內核模塊或命令行工具我可以用來存儲完整的狀態在磁盤上運行的程序?將整個進程狀態存儲在磁盤上並稍後恢復? (在Linux/Unix上)

即:我想將進程當前正在使用的內存,頁面佈局,堆棧,寄存器,線程和文件描述符轉儲到硬盤驅動器上的一個文件中,並能夠在以後無縫地恢復它,就像一個模擬器「savestate」或一個虛擬機「快照」。

如果可能的話,我還希望有多個程序狀態的「備份副本」,所以如果程序由於某種原因死亡,我可以恢復到以前的執行點。

這可能嗎?

+1

可能重複['Hibernate'在linux中的一個過程](http://stackoverflow.com/questions/2134771/hibernate-a-process-in-linux) – ergosys 2011-04-18 02:52:31

+0

還有一個類似的問題[關於unix.exchange問](http://unix.stackexchange.com/questions/23078/suspend-resume-single-process-to-from-disk) – 2015-05-04 21:03:28

回答

3

類似this?您也可以查看checkpointing page on wikipedia

+1

謝謝! :-)這看起來非常令人印象深刻。但是它仍然被修復? cryoPID2上的最後一次提交似乎是從2009年開始的。:-( – 2011-04-18 01:53:02

+1

不幸的是,這個項目似乎至少是一個殭屍。看到這個答案(這個問題可能是這個的重複):http://stackoverflow.com/questions/2134771/hibernate -a-process-in-linux/2137808#2137808 – ergosys 2011-04-18 02:51:10

+2

你的鏈接(「this」)現在已經死機了,你可能想鏈接到類似[code.google](https:// code。 google.com/p/cryopid/)或其他東西,或者鏈接到[sourceforge](http://sourceforge.net/projects/cryopid2/) – Guildenstern 2014-10-12 21:54:06

1

A core dump基本上就是這樣,所以是的,它一定是可以得到的。

你真正想要的是通過re將轉儲存儲爲正在運行的程序。這可能會更困難。

2

你應該看看伯克利實驗室的BLCR project。 這被多個MPI實現廣泛使用,爲並行應用程序提供 檢查點/重新啓動功能。

+0

「目前還沒有任何支持3.x內核的版本。 t ,因爲修補配置腳本幾乎沒有一點可以讓 正確地定位3.x內核,這是此錯誤來自的地方。「--https://hpcrdm.lbl.gov/pipermail/checkpoint/2012- June/000427.html 有何建議?我真的想讓這個工作。 – 2017-02-17 20:39:45

相關問題