프로세스가 대기 중인 이유를 어떻게 알 수 있나요?

프로세스가 대기 중인 이유를 어떻게 알 수 있나요?

OSX Mavericks에서 명령을 실행하려고 하는데 중단된 것 같습니다. 나는 이것이 Control + T포그라운드 작업의 상태를 표시하는 Unix 명령이라는 것을 알았습니다. 진행 중에 여러 번 누르세요.몇 분나에게주세요:

$ bin/rake                                                                                
load: 3.68  cmd: ruby 55761 waiting 0.12u 0.02s
load: 3.47  cmd: ruby 55761 waiting 0.12u 0.02s
load: 3.47  cmd: ruby 55761 waiting 0.12u 0.02s
load: 3.09  cmd: ruby 55761 waiting 0.12u 0.02s
load: 2.41  cmd: ruby 55761 waiting 0.12u 0.02s
load: 4.38  cmd: ruby 55761 waiting 0.12u 0.02s

이는 상태가 "대기 중"이고 실행하는 데 사용자 시간이 0.12초, CPU 시간이 0.02초밖에 걸리지 않았다는 의미로 이해됩니다.

왜 계속 기다리는지 알고 싶습니다.프로세스가 대기 중인 이유를 확인하는 방법?

답변1

달리기dtruss프로세스가 실행 중인 시스템 호출을 확인하세요.

dtruss -p55761

이는 PID 55761을 사용하는 프로세스가 현재 실행 중인 시스템 호출을 알려줍니다. 이 시스템 호출이 파일 설명자에 액세스하면,lsof거기에 어떤 파일이 열려 있는지 알려줄 것입니다.

lsof -p55761

파일이 파이프나 소켓인 경우 반대편에 뭔가가 있는지 어떻게 찾는지 모르겠습니다.

관련 정보