Linux에서 열린 프로세스 파일 모니터링 (실시간) 명령으로 찾을 수 있습니다 ls -l

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

ls -l /proc/PID/fd

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



답변

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

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

조심해

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

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

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


답변

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

strace -p _pid_of_app_ -e trace=open,close

답변

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

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


답변

명령 출력을 파일에 쓰는 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