繁体   English   中英

是否可以找到哪个进程在Linux中使用OPENSSL?

[英]Is it possible to find which process is using OPENSSL in linux?

假设有一个进程正在运行,并且正在访问OPENSSL共享库以执行某些操作。 有什么办法可以找到这个过程的pid吗? 是否有任何方法可以找到此进程在哪个核心上运行?

如果可能的话,它是否需要诸如sudo等的任何特殊特权?

操作系统-Debian / Ubuntu

根据您的实际需求,可能会执行以下操作:

lsof | grep /usr/lib64/libcrypto.so | awk '{print $1, $2}' | sort -u

本质上:

  1. 使用lsof列出系统上所有打开的文件
  2. 搜索OpenSSL库路径(该路径还捕获libcrypto.so.1.0类的版本化名称)
  3. 选择进程名称和PID
  4. 删除任何重复的条目

请注意,这还将使用共享库文件的先前实例输出进程,例如,将其更新为新版本然后删除。 当一个进程有多个具有不同名称的线程时,它还存在输出重复项的小问题。

是的,这可能确实需要提升的特权,具体取决于您/proc目录的权限。

如果确实需要处理器内核,则可以尝试以下操作(贷记到dkaz ):

lsof | grep /usr/lib64/libcrypto.so | awk '{print $2}' |
    xargs -r ps -L --no-headers -o pid,psr,comm -p | sort -u

ps命令中添加lwp变量还将显示线程ID:

lsof | grep /usr/lib64/libcrypto.so | awk '{print $2}' |
    xargs -r ps -L --no-headers -o pid,lwp,psr,comm -p

PS: 这个库对用户的核心要求听起来还是有点不寻常。 如果您提到要更广泛地解决的问题,则可能会更有用。

thkala几乎是正确的。 问题在于答案是一半,因为它没有给出核心信息。

我会运行:

$ lsof | grep /usr/lib64/libcrypto.so |awk '{print $2}' | xargs ps -o pid,psr,comm -p

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM