공유라이브러리를 사용하는 binary 추적?

sonc81의 이미지

특정 .so 공유라이브러리를 사용하고 있는

binary 추적하는 명령이 있나요?

반대로 특정binary가 참조하는 공유라이브러리 추적은 가능하잖아요...

sonc81의 이미지

ㅠㅠ

bootmeta의 이미지

1. 일단 특정 process에서 사용중인 .so 목록을 보려면

$> lsof -p 4341

출력 결과에서 /usr/lib/xxx.so.2.1.0 확인

2. /usr/lib/xxx.so.2.1.0을 사용 중인 process들 목록을 보려면

$> fuser /usr/lib/xxx.so.2.1.0

출력 결과 pid뒤 m은 mmapped file이나 공유 라이브러리 의미
다양한 옵션이나 자세한 사용법을 보려면

$> man fuser

ps) ubuntu 9.10에서 test, 다른 환경에서도 가능한지 모름 --;

sonc81의 이미지

정말 감사드립니다 ^^
실행파일마다 참조하는 라이브러리를 일일이 찾고 있었는데 -_-;;
큰 도움이 되었습니다. ^^

bootmeta의 이미지

실행 중이 아닌 program의 사용 공유 library는

$> ldd /usr/bin/python

.so 를 사용 중인 process는 쉽게 찾을 수 있는데 반해, 실행 중이 아닌 program의 .so 의존성 여부는 해당 linux 배포판의 패키지 관리 시스템에 종속적이고, 패키지 관리 시스템과 별도로 설치한 program은 추적이 힘듭니다. (확신은 못함. --;) 누가 더 좋은 해결책을 댓글로 달아주시겠죠.