linux - 是否有可能在 linux 中找到哪个进程正在使用 OPENSSL?

标签 linux security gcc debian performance-testing

假设,一个进程正在运行并访问 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

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:what-c​​ore-are-the-users-of-this-library-on 要求听起来还是有点不寻常。如果您从更广泛的角度提及您试图解决的问题,可能会更有用。

关于linux - 是否有可能在 linux 中找到哪个进程正在使用 OPENSSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35613262/

相关文章:

c# - 更新面板的性质

c++ - 仅 header 类 + 未定义的函数引用,仅当返回该类的对象时

c - C语言中,可以通过栈指针访问另一个函数中main函数的局部变量吗?

c - 是什么阻止了将函数参数用作隐藏指针?

c - 回调函数内的同步问题

c - 从提供的 Key 获取消息队列 ID

java - 表单验证成功后出现 403

linux - 使用 sudo 运行命令

c - Linux hash.h : Using the fast hashing routine

security - 在Google App Engine上列入黑名单-用户或设备(而不仅仅是IP地址)