구성 관리를하는 데몬 프로세스가 있습니다. 다른 모든 프로세스는 기능을 수행하기 위해이 데몬과 상호 작용해야합니다. 그러나 대규모 작업을 실행할 때 몇 시간이 지나면 데몬 프로세스가 2 ~ 3 시간 동안 응답하지 않습니다. 2 시간에서 3 시간 후에는 정상적으로 작동합니다.Linux 용 디버깅 유틸리티 프로세스가 중단됩니까?
Linux 용 디버깅 유틸리티 프로세스가 중단됩니까?
어떻게하면 리눅스 프로세스가 멈추는 지 알 수 있을까요?
구성 관리를하는 데몬 프로세스가 있습니다. 다른 모든 프로세스는 기능을 수행하기 위해이 데몬과 상호 작용해야합니다. 그러나 대규모 작업을 실행할 때 몇 시간이 지나면 데몬 프로세스가 2 ~ 3 시간 동안 응답하지 않습니다. 2 시간에서 3 시간 후에는 정상적으로 작동합니다.Linux 용 디버깅 유틸리티 프로세스가 중단됩니까?
Linux 용 디버깅 유틸리티 프로세스가 중단됩니까?
어떻게하면 리눅스 프로세스가 멈추는 지 알 수 있을까요?
하나의 옵션은 gdb
을 사용하고 실행중인 프로세스에 연결하기 위해 attach
명령을 사용하는 것입니다. 당신은
file
명령을 사용하여) 문제의 실행의 상징이들 각각은 약간의 정보를 제공하여 문제의 그림을 구성 할 수 있습니다.
gdb를 사용하는 경우 앱이 차단 될 때 코어 덤프를 트리거하는 것이 유용 할 수 있습니다. 그런 다음 사후 사후 디버깅을 사용하여 분석 할 수있는 정적 스냅 샷이 있습니다. 스크립트로 트리거 할 수 있습니다. 이론을 테스트하는 데 사용할 수있는 일련의 스냅 샷을 빠르게 작성합니다.
'ps ax'는 busy 루프 탐지를위한 좋은 유틸리티라고 생각하지 않습니다.'top'이 더 좋을 것입니다. 이 –
당신은 당연히 맞습니다, 나는 이것을 거의 항상 나란히 사용하는 경향이 있습니다. 그래서 그들은 내 머리 속에 섞여 있습니다. 고마워, 내가 대답을 업데이 트 –
안녕하세요 피터, strace는 나를 끊어 문제를 해결하는 데 도움. 'flock()'을 사용하여 파일 잠금에 대한 두 프로세스간에 교착 상태 시나리오가 발생했습니다. 도움 주셔서 대단히 감사합니다. strace가 없으면 프로세스가 왜 멈추고 있는지 알아내는 것은 실제로 불가능한 작업입니다. – Niranjan
은 여러 가지 방법으로 수행 할 수 있습니다
미리 선택된 경로로 파일을 주기적으로 만지십시오. 외부 응용 프로그램은 파일에 대한 시간 소인을 볼 수 있으며 부적절한 경우 appliation이 dead 또는 deadlock으로 간주 할 수 있습니다.
신호가 프로세스를 종료하도록 (적절하게 sigaction 사용) alarm
syscall을 반복적으로 사용할 수 있습니다. 프로그램이 실행 중일 때까지 계속 alarm
으로 전화를 걸면 프로그램이 계속 실행됩니다. 일단 신호를 보내지 않으면 신호가 발 생합니다. in this answer 설명대로 fork
및 waitpid
로 죽으면
당신은 완벽하게 프로세스를 다시 시작할 수 있습니다. 운영 체제가 메모리 페이지를 공유하기 때문에 상당한 리소스가 들지 않습니다.
'gdb/path/to/executable PID' 명령 줄에서도 똑같이 할 수 있습니다. –