![어떤 프로세스를 추적하지 말아야 합니까?](https://linux55.com/image/17010/%EC%96%B4%EB%96%A4%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%B6%94%EC%A0%81%ED%95%98%EC%A7%80%20%EB%A7%90%EC%95%84%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
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용 시스템과 같은 시스템 전반의 감사 시스템(예제 및 지침 참조)여기또는여기)가 더 적절할 수도 있습니다.