프로세스에서 열거 나 액세스 한 파일을 지속적으로 모니터링


25

lsof -p 12345 pid가 12345 인 프로세스에 의해 열린 모든 파일을 나열하지만 특정 순간에만 표시됩니다.

프로세스 전체에서 프로세스가 액세스하는 모든 단일 파일을 나열 / 표시하기 위해 프로세스를 처음부터 끝까지 (프로세스가 종료 될 때까지) 어떻게 지속적으로 모니터링 할 수 있습니까?


답변:


31

시도해보십시오 strace -p 12345; 그것은 당신이 달성하려는 일을해야합니다.

열린 파일 만 표시하도록 출력을 필터링 할 수 있습니다 ( Dan D. 's comment ).

strace -e open -p 12345

참고 : 을 사용하여 빠르게 실행중인 프로세스를 추적 할 수도 있습니다 strace -e open <command>.


결과물은 친근하지 않고 너무 많은 것들입니다.
MA1

배관하여 문제를 해결할 수 있습니다 strace -p {pid} | grep -i "Open" | tee files_opened.log. 키는 입니다. grep원하는 시스템 호출에 대한 출력을 필터링 할 수 있습니다 (예 :) open().

11
@Ninefingers는 사실 strace보다 더 잘 할 수 grep-e옵션 :strace -e open
댄 D.

@DanD oh yeah,

strace 명령을 죽이면 추적중인 것도 죽입니다. 왜 이런 일이 발생합니까 (사이 그윈)?
CMCDragonkai

6

새로운 유틸리티 fatrace 는 다음을 수행합니다 : https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

-p 옵션을 사용하지 마십시오. lsof 또는 기타 유틸리티에서 의미하는 것과 반대입니다.


3

이렇게하면 명령이 다시 실행되고 매번 화면이 지워집니다.

watch "lsof -p 12345"

경고 : 빠른 파일 액세스가 그리 오래 걸리지 않는 파일 만 볼 수 있습니다.


2
이것은를 사용하는 다른 답변과 비교하여 다소 서투른 것 strace입니다.
David Foerster

1
그것은 부정확 한 해결책입니다. 프로세스는 실행 사이에 파일을 사용할 수 있습니다lsof
Dor

@ 또는 lsof의 타이밍을 1 초 이하로 설정하고 정밀도를 높일 수 있습니다. 다른 것에 비해 서투른 반면 부정확 한 솔루션이라는 점에서 잘못되었습니다.
Jordon Bedwell

긴 파일 작업 (예 : 데이터베이스 백업)을 살펴 보는 것이 좋은 대안 일 수 있습니다.
jcalfee314
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.