실행 시 A가 연 모든 파일을 나열하는 특정 명령 A "내부"를 실행할 수 있는 유틸리티가 있습니까?
일부 암호 요구 사항을 변경하기 위해 유틸리티(A)를 실행했지만 문제가 발생했습니다. 그래서 변경된 파일을 수동으로 열어서 내용을 봐야 합니다. 명령은 약 1초 만에 완료되는데, 이는 lsof
목적에 비해 너무 느립니다.
답변1
이를 달성하는 한 가지 방법은 프로그램에서 수행된 시스템 호출을 추적하고 필터 open
/ openat
시스템 호출 또는 이름 조회를 수행하는 것입니다.
처음 두 도구는 각각 truss
AT&T Unix System 5와 ktrace
4.4BSD에 있습니다. (후자의 쌍은 기계가 읽을 수 있는 출력을 사람이 읽을 수 있는 형식으로 ktrace
변환합니다 kdump
.) 수십 년 후의 발명품은 DTrace 프레임워크였습니다.
이제 일부 명령의 실행을 추적하려면 다음을 수행하십시오 wibble
.
- Illumos 및 관련 운영 체제에서 이 유틸리티는
truss
SunOS를 통해 상속됩니다. 예를 들어truss -o truss.out -t 열기, 열기 스윙
- OpenBSD에서 이 유틸리티는
ktrace
4.4BSD부터 시작하여,kdump
. 예를 들어ktrace -tn 스윙
- 예를 들어 MacOS에서 이 유틸리티는 입니다
dtruss
.dtruss -t 스윙 켜기
- Linux 기반 운영 체제에서 이 유틸리티는
strace
. 예를 들어strace -o strace.out -e 열기, Wibble 열기
- FreeBSD 및 그 파생 운영 체제에는 다음이 포함됩니다.
FreeBSD와 Illumos 및 그 파생물도 dtrace
DTrace 프레임워크의 일부로 포함되어 있지만 여기서는 특정 목적에 비해 과잉입니다. MacOS는 dtruss
실제로 DTrace 프레임워크를 기반으로 구축되었으므로 여기에 언급된 다른 도구에는 없는 단점인 수퍼유저 권한이 필요합니다.