파일 핸들 번호를 기준으로 파일 이름 가져오기

파일 핸들 번호를 기준으로 파일 이름 가져오기

strace -p 1234 -o strace.out프로세스 1234성능이 좋지 않은 것으로 의심되는 시스템을 실행하고 있습니다 . reads완료하는 데 거의 1분이 걸리는 것을 확인했습니다 .

read(11, "\0\335\0\0\6\0\0\0\0\0\20\27m\3708\341\246\247\365\374\334\0274-X#\21!xs\10\25"..., 2064) = 221

파일 핸들과 관련된 파일 이름을 알고 싶습니다 11.

고쳐 쓰다

$ sudo strace -yp 3549 -o strace.out.2
strace: invalid option -- y
usage: strace [-dffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file]
              [-p pid] ... [-s strsize] [-u username] [-E var=val] ...
              [command [arg ...]]
   or: strace -c [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ...
              [command [arg ...]]
-c -- count time, calls, and errors for each syscall and report summary
-f -- follow forks, -ff -- with output into separate files
-F -- attempt to follow vforks, -h -- print help message
-i -- print instruction pointer at time of syscall
-q -- suppress messages about attaching, detaching, etc.
-r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs
-T -- print time spent in each syscall, -V -- print version
-v -- verbose mode: print unabbreviated argv, stat, termio[s], etc. args
-x -- print non-ascii strings in hex, -xx -- print all strings in hex
-a column -- alignment COLUMN for printing syscall results (default 40)
-e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]...
   options: trace, abbrev, verbose, raw, signal, read, or write
-o file -- send trace output to FILE instead of stderr
-O overhead -- set overhead for tracing syscalls to OVERHEAD usecs
-p pid -- trace process with process id PID, may be repeated
-s strsize -- limit length of print strings to STRSIZE chars (default 32)
-S sortby -- sort syscall counts by: time, calls, name, nothing (default time)
-u username -- run command as username handling setuid and/or setgid
-E var=val -- put var=val in the environment for command
-E var -- remove var from the environment for command

답변1

Linux를 실행하면 uid가 소유한 모든 프로세스(또는 루트인 경우 모든 프로세스)의 파일 설명자와 연관된 파일 이름을 찾을 수 있습니다 ls.

예를 들어:

ls -lF /proc/1234/fd/11

답변2

아름다운 매뉴얼에서:

   -y          Print paths associated with  file  descriptor  argu-
               ments

관련 정보