명령으로 열린 파일을 나열하시겠습니까? lsof가 너무 느립니다

명령으로 열린 파일을 나열하시겠습니까? lsof가 너무 느립니다

실행 시 A가 연 모든 파일을 나열하는 특정 명령 A "내부"를 실행할 수 있는 유틸리티가 있습니까?

일부 암호 요구 사항을 변경하기 위해 유틸리티(A)를 실행했지만 문제가 발생했습니다. 그래서 변경된 파일을 수동으로 열어서 내용을 봐야 합니다. 명령은 약 1초 만에 완료되는데, 이는 lsof목적에 비해 너무 느립니다.

답변1

이를 달성하는 한 가지 방법은 프로그램에서 수행된 시스템 호출을 추적하고 필터 open/ openat시스템 호출 또는 이름 조회를 수행하는 것입니다.

처음 두 도구는 각각 trussAT&T Unix System 5와 ktrace4.4BSD에 있습니다. (후자의 쌍은 기계가 읽을 수 있는 출력을 사람이 읽을 수 있는 형식으로 ktrace변환합니다 kdump.) 수십 년 후의 발명품은 DTrace 프레임워크였습니다.

이제 일부 명령의 실행을 추적하려면 다음을 수행하십시오 wibble.

  • Illumos 및 관련 운영 체제에서 이 유틸리티는trussSunOS를 통해 상속됩니다. 예를 들어
    truss -o truss.out -t 열기, 열기 스윙
  • OpenBSD에서 이 유틸리티는ktrace4.4BSD부터 시작하여,kdump. 예를 들어
    ktrace -tn 스윙
  • 예를 들어 MacOS에서 이 유틸리티는 입니다 dtruss.
    dtruss -t 스윙 켜기
  • Linux 기반 운영 체제에서 이 유틸리티는strace. 예를 들어
    strace -o strace.out -e 열기, Wibble 열기
  • FreeBSD 및 그 파생 운영 체제에는 다음이 포함됩니다.
    • AT&T 클론truss, 그러나 -t원시 옵션이 부족합니다. 즉, 일반적인 텍스트 처리 도구를 사용하여 콘텐츠를 후처리해야 합니다.
    • 이것ktrace(추가하다kdump) 4.4BSD부터 지원합니다 -t n.

FreeBSD와 Illumos 및 그 파생물도 dtraceDTrace 프레임워크의 일부로 포함되어 있지만 여기서는 특정 목적에 비해 과잉입니다. MacOS는 dtruss실제로 DTrace 프레임워크를 기반으로 구축되었으므로 여기에 언급된 다른 도구에는 없는 단점인 수퍼유저 권한이 필요합니다.

관련 정보