어떤 프로세스를 추적하지 말아야 합니까?

어떤 프로세스를 추적하지 말아야 합니까?

strace나는 이름으로 "현재 사용자의 프로세스 집합을 가져오는" 작은 함수를 만들었습니다 .

function pstrace() {
    local pattern="$1";
    shift;
    prefixDashP $(pgrep -U $(whoami) $pattern) | xargs strace -o /dev/stdout $@;
}

function prefixDashP() {
    local new_args=();
    for arg; do
        new_args+=( '-p' );
        new_args+=( "$arg" );
    done;
    for arg in "${new_args[@]}"; do
        echo "$arg";
    done;
}

# Usage:  pstrace pattern1 pattern2 ...

문제는 실수로 너무 광범위한 모드를 지정하면 모니터링해서는 안되는 프로세스를 모니터링하려고 시도하여 시스템이 정지된다는 것입니다.

항상 제외할 수 있는 프로세스 목록이 있습니까?

답변1

처리된 출력과 관련된 진행 상황을 추적할 수 없습니다 strace. 이는 적어도 터미널 에뮬레이터에서 strace를 실행하고 있음을 의미합니다. 전체 시스템이 정지될 것이라고 생각하지 않습니다. 루트로 실행 strace하고 X 서버를 추적하지 않는 한 속도가 느려질 뿐이므로 다른 터미널로 전환하여 strace 프로세스를 종료할 수 있어야 합니다.

strace 출력을 파일로 보내는 것이 덜 위험하고 아마도 더 편리할 것입니다. less부팅 후 시작 strace하거나, 실수로 추적한 경우 터미널 에뮬레이터를 종료하세요.

많은 프로세스를 추적하려는 경우 잘못된 도구를 사용하고 있을 수 있습니다. Linux용 시스템과 같은 시스템 전반의 감사 시스템(예제 및 지침 참조)여기또는여기)가 더 적절할 수도 있습니다.

관련 정보