이 time
명령을 사용하면 특정 작업의 CPU 시간을 추정할 수 있습니다. 그러나 출력에는 하위 프로세스에서 소요된 시간이 포함된 것으로 보입니다. 상위 프로세스에서 소요된 시간만 얻을 수 있는 방법이 있습니까?
답변1
루사흐 얻기(2)Offer RUSAGE_SELF
또는 RUSAGE_CHILDREN
; 셸을 호출하면 RUSAGE_CHILDREN
프로세스와 해당 하위 항목이 포함된 프로세스만 사용할 수 있습니다. 따라서 Stéphane Chazelas가 지적했듯이당신의프로세스를 호출해야 합니다.getrusage(RUSAGE_SELF, &usage)
자신 안에서부터, 프로세스를 편집할 수 없는 경우 LD_PRELOAD
몇 가지 트릭을 통해 편집해야 합니다.
또 다른 옵션은 여기에서 DTrace 또는 SystemTap 유형 커널 프로파일링 도구를 사용하여 다음 보고서에 프로세스 종료 시 사용량을 보고하는 것입니다.모두프로세스 종료 값:
probe kprocess.exit {
printf("%s[%d]: %s\n %s\n %s\n\n",
execname(), pid(), cmdline_str(),
task_time_string(),
proc_mem_string()
);
}
또한 SystemTap을 사용하여 적절한 코드로 특정 PID 또는 실행 파일 이름을 분석할 수도 있습니다.
probe kprocess.exit {
if (pid() != target()) next;
printf("%s[%d]: %s\n", execname(), pid(), task_time_string());
}
신호 등에 의해 프로세스가 종료될 때 어떤 일이 발생하는지 확인하려면 추가 테스트가 필요할 수 있습니다.