통합 테스트가 왜 그렇게 오래 걸리고 방해가 되는 것처럼 보이는지 디버깅하려고 합니다.
테스트 서비스에 로그인하여 다음 동작을 확인했습니다.
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