Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将脚本变量保存在代码中,并在重新启动后重置它们_Python_Python 3.x_Backup_Vps_Ubuntu Server - Fatal编程技术网

Python 将脚本变量保存在代码中,并在重新启动后重置它们

Python 将脚本变量保存在代码中,并在重新启动后重置它们,python,python-3.x,backup,vps,ubuntu-server,Python,Python 3.x,Backup,Vps,Ubuntu Server,在我的vps中,我运行了4个Python脚本,已经60天没有重新启动vps了,现在我必须重新启动,但是如果我重新启动vps,我的Python变量和数据将被删除,因为我没有将它们存储在文件中,它们存储在Python脚本中的变量中。 我的操作系统是Ubuntu服务器16.04 LTS,我用nohup命令运行python代码,直到它们可以在后台运行。 现在我需要一种方法来停止我的脚本,而不删除它们的变量,并在重新启动vps后使用相同的变量和数据启动它们。 我有什么办法可以做到这一点吗? 另外,我很抱歉

在我的vps中,我运行了4个Python脚本,已经60天没有重新启动vps了,现在我必须重新启动,但是如果我重新启动vps,我的Python变量和数据将被删除,因为我没有将它们存储在文件中,它们存储在Python脚本中的变量中。 我的操作系统是Ubuntu服务器16.04 LTS,我用nohup命令运行python代码,直到它们可以在后台运行。 现在我需要一种方法来停止我的脚本,而不删除它们的变量,并在重新启动vps后使用相同的变量和数据启动它们。 我有什么办法可以做到这一点吗?
另外,我很抱歉在我的问题中写了错误。

Python没有提供任何方法

但是,您可以使用或类似的工具来冻结和快照解释器进程。然后,在重新启动后,您可以将快照恢复到一个新进程中,该进程正好从您停止的地方开始

这可能行不通。1但很有可能行不通。这与CRIU文档中的a本质上是一样的,只是你没有迁移到新的计算机/容器等,只是为了同一台计算机的未来。因此,从那页开始阅读,并从那里开始链接

您可能应该在提交之前进行测试。 *在一个不做任何重要事情的Python脚本上尝试它(显然不包括系统重启,只包括可执行文件
kill-9
)(可能增加一个计数器,打印出来,睡眠一秒钟,重复。 *也许可以在一个脚本上尝试一下,这个脚本和你正在做的类似。 *如果同时运行一个程序的两个副本是安全的(它们不会在写入同一个文件时互相踩踏,也不会在同一个套接字上争斗,或者诸如此类),那么启动第二个副本并测试转储/杀死/恢复该副本。 *在一个真实的进程上尝试它,仍然不需要重新启动。 *四个都试一下。 *交叉你的手指,牺牲一只鸡,然后真的这么做


如果这不能实现,我能想到的唯一选择就是仔细检查脚本,手动找出需要保存的所有内容,以及如何从顶级全局访问这些内容,然后在调试器中执行这些操作

理想情况下,您将编写一个脚本,自动访问和保存所有这些内容,再加上另一个脚本,以便在重新启动时将其提供给新实例。然后您只需
pdb
实时解释器并开始转储所有内容

这肯定是一个很大的工作,并没有太多的乐趣。从积极的一面来看,如果你做得对,它肯定会起作用。第三方面,做得不对很容易


1.如果你依赖于打开的文件、管道、套接字等,CRIU会尽你所能,这超出了你最初的预期,但仍然不是你可能想要的一切……此外,如果你使用的是几乎所有的RAM,那么很难让事情回到完全相同的状态。可能还有其他可能的问题