스크립트 생성부터 전체 추적이 가능합니까? 어떻게?

스크립트 생성부터 전체 추적이 가능합니까? 어떻게?

strace가 쓰는 파일을 캡처하기 위해 프로그램에 strace를 연결하고 싶다고 가정해 보겠습니다. 기존 PID가 필요합니다. strace를 연결하면 그때쯤에는 스크립트가 파일을 작성했을 수 있으며 나는 그 파일을 놓칠 것입니다. 고전적인 경주 조건. 지금 내가 하고 있는 일은 sleep 1전체 추적을 얻기 위해 이전에 명령을 실행하는 것 외에는 아무것도 하지 않는 원본 스크립트를 실행하는 또 다른 프로그램을 만드는 것입니다 . 이건 나쁜 것 같아요. 많은 수의 스크립트를 실행하면 성능 문제가 발생할 수 있습니다. 하지만 기존 PID 없이는 strace를 연결할 수 없습니다. 또는?

답변1

strace스크립트를 실행 시 원본 스크립트를 시작하는 래퍼로 바꾸세요 . 여기에는 다음이 포함될 수 있습니다.

mv yourscript /somewhere/else/yourscript

그러면 yourscript된다

#!/bin/sh
OUTPUT_TO=`mktemp /tmp/yourscript.$$.XXXXXXXXXX` || exit 1
exec strace -o $OUTPUT_TO ... /somewhere/else/yourscript "$@"

필요한 ...다른 매개변수는 어디에 있습니까 ?strace

대안으로, sysdig프로세스 ID나 래퍼 스크립트 없이도 파일 이름이나 사용자 이름으로 추적할 수 있으므로 다음을 고려하십시오.

sysdig -p '%fd.name' proc.name contains yourscript

관련 정보