服务器升级Python版本(2.6.6→3.6.5):已运行screen程序能否完成?
关于升级Python版本后正在运行的程序能否继续执行的问题
放心,你那个在screen里已经运行多日的Python程序完全可以继续运行直至完成,升级Python3.6.5的操作不会打断它。
原因很简单:
- 当你用Python2.6.6启动程序时,系统已经把Python2.6.6的解释器二进制文件加载到了该进程的内存空间中。一旦进程启动,它后续的运行就只依赖内存里的这个解释器副本,和磁盘上的Python可执行文件彻底脱钩了。
- 你升级Python3.6.5的操作,本质上只是替换了磁盘上的Python可执行文件(或者修改了软链接指向),但已经运行的进程不会去重新读取磁盘上的文件,所以它会继续用原来的Python2.6.6环境正常执行。
给你两个小提醒:
- 升级过程中别手动去终止那个
screen会话或者对应的Python进程,正常的升级流程(不管是编译安装还是用包管理器更新)都不会影响它。 - 如果是编译安装Python3.6.5,建议不要覆盖系统默认的Python2(比如别用
make install直接替换/usr/bin/python),可以通过--prefix参数指定单独的安装目录,或者用update-alternatives工具管理多版本Python,这样能避免系统里其他依赖Python2的工具出问题——不过这和你正在运行的程序无关,只是系统层面的稳妥做法。
内容的提问来源于stack exchange,提问作者Stan Callewaert
相关产品推荐
相关产品推荐

