ps 출력에 없는 프로세스에 strace를 어떻게 연결합니까?

ps 출력에 없는 프로세스에 strace를 어떻게 연결합니까?

통합 테스트가 왜 그렇게 오래 걸리고 방해가 되는 것처럼 보이는지 디버깅하려고 합니다.

테스트 서비스에 로그인하여 다음 동작을 확인했습니다.

root@colossus:~# strace -p 18310
Process 18310 attached - interrupt to quit
futex(0x7f9915c609d0, FUTEX_WAIT, 18313, NULL^C <unfinished ...>
Process 18310 detached

root@colossus:~# strace -p 18313
Process 18313 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>^C <unfinished ...>
Process 18313 detached

root@colossus:~# ps -ef | grep 18313
root     19089 19034  0 09:46 pts/0    00:00:00 grep --color=auto 18313

root@colossus:~# ps -p 18313
PID TTY          TIME CMD

이 명령에 대한 나의 해석은 해당 하위 명령이 완료될 때 18310까지 기다리는 것 입니다.18313

프로세스가 18313중단된 시스템 호출을 다시 시작하려고 합니다.

이것이 이상해지는 곳입니다. 연결할 수는 있지만 18313실행할 때 현재 프로세스 목록에서 볼 수 없습니다 ps.

누군가 여기서 무슨 일이 일어나고 있는지 이해하도록 도와줄 수 있습니까?

답변1

Stéphane의 의견에 따르면 프로세스가 아닌 스레드가 보입니다.

스레드가 출력에 나열됩니다.ps -L

프로세스의 모든 현재 및 미래 스레드는 다음을 사용하여 추적할 수 있습니다.strace -f

관련 정보