因为现在有个共享库正在被某个进程加载,所以无法替换成最新版本的共享库。有什么办法可以看出当前某个共享库在被哪个进程加载吗?当加载这个共享库的进程coredump了,已打开的共享库的句柄没有被关闭,能有什么办法关闭该句柄么?
2 回答
慕慕森
TA贡献1856条经验 获得超17个赞
标题和问题描述没有明确指明是哪一种操作系统.AIX可以使用procldd命令查看。例如:#procldd12345Solaris可以使用pldd命令查看。例如:#pldd12345Linux楼上已经提到lsof了。另外一个方法是查看/proc/PID/maps文件。例如:#cat/proc/12345/maps|awk'{print$6}'|grep'\.so'|sort|uniq补充楼主的要求是已知.so,要查找该so被哪个进程加载。因此以上命令除了lsof之外,都不是直接的解决。在进程数不多的时候,可以手工执行以上的命令来一个个排除进程。如果有大量进程,可能就需要写一个脚本来自动完成这个过程。
弑天下
TA贡献1818条经验 获得超8个赞
使用lsof,例如:$lsoflibpython2.7.so.1COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEbluefish8772xxxmemREG8,928769121311208libpython2.7.so.1.0
添加回答
举报
0/150
提交
取消