Linux에서 열린 프로세스 파일 모니터링 (실시간)


10

XYZ 프로세스에 의해 열린 파일은 다음 명령으로 찾을 수 있습니다

ls -l /proc/PID/fd

tailx 초마다 자동 새로 고침 과 같은 대화식으로 수행 할 수있는 방법이 있습니까?

답변:


15

다음 watch명령을 시도하십시오 :

watch -n 10 ls -l /proc/$$/fd

조심해

당신은 구식 while 루프를 사용할 수 있습니다 :

while :
do
 ls -l /proc/$$/fd
 sleep 10
done

watch데비안 기반 시스템 의 procps 패키지와 RedHat 파생 시스템 의 prorps rpm에 있습니다.


1
sleep 자체는 while 루프에서 조건으로 사용될 수 있으므로 예제를 다음과 같이 더 우아하게 작성할 수 있습니다. while sleep 10; ls -l / proc / $$ / fd를 수행하십시오. 완료
ipozgaj

7

열려있는 각 파일을 보려면을 사용하여 파일을 필터링하면됩니다 strace. 예를 들면 다음과 같습니다.

strace -p _pid_of_app_ -e trace=open,close

2
이것은 정말 최고의 답변입니다. 나는 플래그를 권 해드립니다 -y그리고 -f당신이 쉘에서 실행 디버그 뭔가를 시도하는 경우. 쉘 PID를 전달하면 -f포크가 따라 옵니다 .
Aea

4

lsof와 결합 할 수 watch있습니다.

예를 들어 watch "lsof -p 1234"2 초마다 pid 1234의 모든 열린 파일 목록이 표시됩니다. 필요에 따라 일부 매개 변수를 변경할 수 있습니다.


2 초마다 목록을 제공하지 않습니다. 매개 변수 -r 2가 작동하지 않습니다! -p는 PID입니다. 대답은 매우 가난합니다!
mahatmanich

2
에 대한 -r옵션을 몰랐습니다 lsof. 따라서 2 초마다 watch실행했습니다 lsof.
Christian

0

명령 출력을 파일에 쓰는 bash 파일을 만들었습니다. 파일은 현재 날짜를 기준으로 생성되었습니다. 여기에서 열린 파일 수를 세고 있습니다.

#!/bin/bash
while :
do
 cd /proc/<PID>/fd
 today=$(date +"%m-%d-%Y")
 filename="/tmp/${today}.txt"
 ls -l | wc -l >> "${filename}"
 sleep 10
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.