假设有一个进程正在运行并访问OPENSSL共享库以执行某些操作。有没有办法找到这个过程的 pid ? 有没有办法找到哪个核心这个进程正在运行?
如果可能,是否需要sudo等特殊权限?
OS- Debian / Ubuntu
答案 0 :(得分:1)
根据您的具体需要,可能会这样:
lsof | grep /usr/lib64/libcrypto.so | awk '{print $1, $2}' | sort -u
这基本上是:
lsof
列出系统上所有打开的文件libcrypto.so.1.0
等版本化名称)请注意,这也将使用共享库文件的先前实例输出进程,例如,更新到新版本然后删除。当进程具有多个具有不同名称的线程时,它还存在输出重复项的次要问题。
是的,这可能确实需要提升权限,具体取决于/proc
目录的权限。
如果你真的需要处理器核心,你可以试试这样的东西(归功于dkaz):
lsof | grep /usr/lib64/libcrypto.so | awk '{print $2}' |
xargs -r ps -L --no-headers -o pid,psr,comm -p | sort -u
将lwp
变量添加到ps
命令也会显示线程ID:
lsof | grep /usr/lib64/libcrypto.so | awk '{print $2}' |
xargs -r ps -L --no-headers -o pid,lwp,psr,comm -p
PS:这个库的用户是什么样的用户仍然听起来有点不寻常。如果你提到你试图用更广泛的术语解决的问题,它可能会更有用。
答案 1 :(得分:0)
我会跑:
$ lsof | grep /usr/lib64/libcrypto.so |awk '{print $2}' | xargs ps -o pid,psr,comm -p