ide*_*all 20 linux swap process virtual-memory
我想停止一个长时间运行的进程,这样它就不会消耗任何 CPU 或物理内存资源,以便将来恢复相同的进程。
我知道,CPU部分是可以实现的使用SIGSTOP和SIGCONT 信号,但有可能页出(换出在工艺脏页的情况下),立即一(停止)进程的专用内存RSS?
vir*_*tex 11
您可能会研究一种称为检查点/恢复的技术。这将允许您执行一个正在运行的进程并将其状态保存到一组文件中,然后在以后恢复它。
要使用它,首先要安装 criu [ git , wiki ]程序(yum install criu或apt install criu)。
要检查正在运行的进程,请创建一个空目录来保存其文件并将 cd 放入该目录。
mkdir /var/tmp/checkpoint
cd /var/tmp/checkpoint
Run Code Online (Sandbox Code Playgroud)
现在检查正在运行的进程。在这种情况下,我使用 --shell-job,因为我的进程在带有关联 tty 的 shell 中运行。
criu dump -t 404 --shell-job
Run Code Online (Sandbox Code Playgroud)
404 是我要检查点的进程的 pid。当我这样做时,我看到我正在运行的进程被杀死,我的 /var/tmp/checkpoint 目录被填充了一组恢复它所需的文件。
为了恢复这个过程,我确保我在检查点文件所在的目录中并进行恢复。
cd /var/tmp/checkpoint
criu restore --shell-job
Run Code Online (Sandbox Code Playgroud)
该过程将在运行它的终端中从它停止的地方开始。如果我终止这个正在运行的进程并criu restore --shell-job再次运行,该进程将恢复到检查点并再次启动。
希望这可以帮助。