누구든지 이 출력을 이해할 수 있습니까 strace
?
[pid 25302] read(34, "}B\311\204\n\250\347$\220\266kRb\304a^^\2504\303k\235\227T\223\16\231\306\277\254\256\306", 32) = 32
Tomcat을 통해 Java 애플리케이션을 실행하는 Linux 시스템에서 제공됩니다. 뭔가를 읽으려고 하는데 파일 이름 대신에 이상한 문자열이 있습니다. 이 부분이 응용프로그램이 실패하는 부분이고 이해가 안되는 부분인 것 같습니다.
답변1
이것read
열린 파일에서 일부 바이트를 읽는 시스템 호출입니다. "홀수 문자열"은 호출이 읽는 바이트입니다. 이 호출은 파일 설명자 34(세 번째 매개변수)에서 32바이트 읽기를 시도하고 성공합니다(반환 값).
애플리케이션이 어떤 파일을 읽고 있는지 알아보려면 이 파일 설명자를 연 시스템 호출의 추적을 검토하세요. 이것은 아마도open
(반환 값),pipe
(첫번째 매개변수),socket
(반환 값) 또는 기타. 파일 설명자가 반환되었을 수도 있습니다.dup
또는dup2
또는dup3
, 이 경우 중복된 파일 설명자를 다시 추적해야 합니다. 프로세스가 여전히 실행 중인 경우 명령을 실행하여 lsof -p 25302
명령이 실행될 때 프로세스에서 어떤 파일을 열었는지 확인할 수도 있습니다.lsof