为了账号安全,请及时绑定邮箱和手机立即绑定

unix如何检测某个共享库正在被哪个进程加载?

unix如何检测某个共享库正在被哪个进程加载?

神不在的星期二 2019-04-07 09:38:23
因为现在有个共享库正在被某个进程加载,所以无法替换成最新版本的共享库。有什么办法可以看出当前某个共享库在被哪个进程加载吗?当加载这个共享库的进程coredump了,已打开的共享库的句柄没有被关闭,能有什么办法关闭该句柄么?
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

标题和问题描述没有明确指明是哪一种操作系统.
AIX
可以使用procldd命令查看。例如:
#procldd12345
Solaris
可以使用pldd命令查看。例如:
#pldd12345
Linux
楼上已经提到lsof了。
另外一个方法是查看/proc/PID/maps文件。例如:
#cat/proc/12345/maps|awk'{print$6}'|grep'\.so'|sort|uniq
补充
楼主的要求是已知.so,要查找该so被哪个进程加载。因此以上命令除了lsof之外,都不是直接的解决。在进程数不多的时候,可以手工执行以上的命令来一个个排除进程。如果有大量进程,可能就需要写一个脚本来自动完成这个过程。
                            
查看完整回答
反对 回复 2019-04-07
?
弑天下

TA贡献1818条经验 获得超8个赞

使用lsof,例如:
$lsoflibpython2.7.so.1
COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME
bluefish8772xxxmemREG8,928769121311208libpython2.7.so.1.0
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信