首页 > 系统相关 >Linux:查看动态库/程序依赖的库

Linux:查看动态库/程序依赖的库

时间:2022-09-18 16:11:53浏览次数:132  
标签:文件 依赖 查看 -- Linux 进程 lsof

  • objdump

# 查看依赖的库
objdump -x xxx.so | grep NEEDED

# 查看可执行程序依赖的库
objdump -x ./testTime | grep NEEDED

  • readelf (https://blog.csdn.net/yfldyxl/article/details/81566279)

# 查看依赖的库
readelf -a xxx.so | grep "Shared"

# 查看可执行程序依赖的库
readelf -a ./testTime | grep "Shared"

# 查看依赖的库 (dynamic 显示动态段的信息)
readelf -d xxx.so
readelf -d ./testTime

# 查看静态库有哪些.o文件
readelf -d xxx.a

 

  • ldd命令

    • Usage: ldd [OPTION]... FILE...
      --help print this help and exit (获取指令帮助信息)
      --version print version information and exit (打印ldd的版本号)
      -d, --data-relocs process data relocations (执行重定位和报告任何丢失的对象)
      -r, --function-relocs process data and function relocations (执行数据对象和函数的重定位,并且报告任何丢失的对象和函数)
      -u, --unused print unused direct dependencies (打印未使用的直接依赖)
      -v, --verbose print all information (详细信息模式,打印所有信息,例如包括符号的版本信息)

# 查看依赖的库
ldd xxx.so

# 查看可执行程序依赖的库
ldd ./testTime

 

  • 在服务端查看哪些进程在使用某一个so(https://blog.csdn.net/xiao_yi_xiao/article/details/124143337)

    • lsof(list open files)命令可以列出当前系统已经打开的所有文件。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表,这对系统监测以及排错是很有帮助的。

lsof ***.so

 lsof [options] filename

  lsof常用形式为:

  lsof test.txt 显示开启文件test.txt的进程
  lsof -c abc 显示abc进程现在打开的文件
  lsof -cp 1234 列出进程号为1234的进程所打开的文件
  lsof -g gid 显示归属gid的进程情况
  lsof +d /usr/local/ 显示/usr/local/目录下被进程开启的文件
  lsof +D /usr/local/ 同上,但是会搜索目录下的目录(即递归搜索),时间较长
  lsof -d 4 显示fd为4的进程
  lsof -i 用以显示符合条件的进程情况
  lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
    46 --> IPv4 or IPv6
    protocol --> TCP or UDP
    hostname --> Internet host name
    hostaddr --> IPv4地址
    service --> /etc/service中的 service name (可以不止一个)
    port --> 端口号 (可以不止一个)

 

  lsof `which httpd`        //查看哪个进程在使用apache的可执行文件
  lsof /etc/passwd          //查看哪个进程在占用/etc/passwd
  lsof /dev/hda6            //查看哪个进程在占用hda6
  lsof /dev/cdrom           //查看哪个进程在占用光驱
  lsof -c sendmail          //查看sendmail进程现在打开的文件
  lsof -c courier -u ^zahn  //显示出哪些文件被以courier打头的进程打开,但是并不属于用户zahn
  lsof -p 30297             //列出进程id为30297的进程所打开的文件
  lsof -D /tmp              //显示所有在/tmp目录下打开文件的进程
   
  lsof -u1000               //查看uid是1000的用户的进程的文件使用情况
  lsof -utony               //查看用户tony的进程的文件使用情况
  lsof -u^tony              //查看不是用户tony的进程的文件使用情况(^是取反的意思)
  lsof -i                   //显示所有已经打开的端口
  lsof -i:80                //查看80端口被哪个进程占用
  lsof -i -U                //显示所有打开的端口和UNIX domain文件
  lsof -i UDP@[url]www.akadia.com:123 //显示哪些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
  lsof -i [email protected]:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
  lsof -i [email protected]:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

 

标签:文件,依赖,查看,--,Linux,进程,lsof
From: https://www.cnblogs.com/ainingxiaoguai/p/16704865.html

相关文章