/proc/<pid>/status
에 따라 현재 디스크 활동을 차단하고있는 실행중인 프로세스의 핵심을 덤프하려고합니다. 실제로, 그것은 GPU에 대한 작업을 수행하는 데 분주합니다 (4 시간의 작업을해야하지만, 지금은 상당히 오래 걸렸습니다). 프로세스의 작업이 얼마나 완료되었는지 알고 싶습니다. 따라서 프로세스의 메모리를 덤프 할 수 있으면 좋을 것입니다. 그러나 내가 아는 한 "디스크 활동 차단"은 어떤 방식 으로든 프로세스를 중단 할 수 없으며 프로세스를 코어 덤프하는 것을 의미합니다. gdb를 사용하려면 ptrace를 통해 연결하려면 프로세스를 중단하고 일시적으로 중지해야합니다.디스크 활동을 차단하고있는 프로세스를 코어 덤프 할 수 있습니까?
내가 단지 /proc/<pid>/{maps,mem}
을 루트로 사용하여 (아마도 일관성이없는) 메모리 상태를 읽을 수 있음을 알고 있지만, 프로세스의 사용자 공간 CPU 레지스터 값을 유지할 수있는 방법을 모르겠다 ... 그 과정은 커널 내부에있다.
소스 코드에서 매 30 분마다 레지스터를 인쇄 할 수 있습니다 .... – 0x90
물론, 내 자신의 코어 덤프 메이커를 굴리는 것에 관한 것보다 기성의 솔루션에 대해 훨씬 행복 할 것입니다. : – thejh
@ 0x90 맞습니다. 강제 재부팅 또는 9 시간의 계산 된 데이터를 잃어 버리거나 알 수없는 시간을 기다리고 싶지 않기 때문에 이미 실행중인 프로그램에서이 작업을 수행 할 수 있기를 바랍니다. 이 일은 (어딘가에 붙어 있지 않다면) 완료해야합니다. "매 30 분마다"하지 않을 것입니다. - 디스크에있을 수있는 (또는 막을 수있는) 방법을 입력하기 전에 항상해야합니다. "디스크 IO "를 추가로 사용함 – thejh