小编典典

更新共享库而无需重新启动进程

linux

如果我的进程正在加载.so库,并且该库有新版本可用,是否可以在不重新启动进程的情况下切换到新库?还是答案取决于诸如库中现有功能之一是否有参数更改之类的事情?

我正在一个相当大的系统中工作,该系统运行100多个进程,每个系统加载10多个库。这些库提供特定的功能,并由独立的团队提供。因此,当其中一个库发生更改(可以说是针对错误修复)时,理想的做法是在后台发布它而不影响运行的过程。可能吗

编辑
谢谢!以我为例,当有新库可用时,所有正在运行的进程都必须开始使用它。不允许他们使用旧版本运行并在以后使用新版本。因此,看起来更安全的选择是重新加载进程。


阅读 387

收藏
2020-06-03

共1个答案

小编典典

您无法在运行进程的情况下即时升级链接库。您甚至可以尝试,但是如果成功(并且不会出现“正在使用文本文件”的错误消息),则必须重新启动该过程以使其将新库映射到内存中。

您可以使用lsof命令检查链接的库(运行时或链接时):

lsof -p <process_pid> | grep ' mem '
2020-06-03