일시 중지된 프로세스를 복사할 수 있나요?

일시 중지된 프로세스를 복사할 수 있나요?

bash에서 실행 중인 작업을 일시 중지하기 위해 ctrl-z를 사용하는 경우 이를 복제할 수 있는 방법이 있습니까? 이렇게 하면 이제 두 개의 동일한 프로세스가 생겼습니다.

여러 파일을 로드하고 이에 대해 일부 분석을 수행하는 Python 스크립트를 실행 중입니다. 그런 다음 분석된 데이터에 대해 몇 가지 테스트를 실행하려는 대화형 단계에 도달합니다. 약 20분 정도 소요되는 초기 분석을 한 번 완료한 다음 대화형 단계를 처음부터 여러 번 테스트할 수 있다는 아이디어입니다.

답변1

라는 도구가 있습니다.냉각제이를 통해 실행 중인 프로세스의 스냅샷을 찍어 나중에 복원할 수 있습니다. 시도하지는 않았지만 원본 프로세스가 계속 실행되는 동안 스냅샷 프로세스를 "복원"할 수 없는 이유는 없습니다. ~처럼테든의 코멘트힌트는 많아요고려해야 할 사항cryopid는 프로세스의 스냅샷을 찍을 때 까다로울 수 있습니다. 귀하의 경우에 가장 좋은 솔루션은 분석이 완료되면 분석을 저장하고 향후 실행 시 로드하도록 원래 프로세스를 수정하는 것입니다.

답변2

jobs이를 얻으려면 - 명령을 사용할 수 있어야 합니다 .

➜  ~  top
[1]  + 55990 suspended  top
➜  ~  jobs -l
[1]  + 55990 suspended  top

답변3

/proc/$pid/관심 있는 프로세스의 디렉터리에 있는 파일을 나열하는 방법을 찾고 계실 것 같습니다.(적어도 Linux 머신에서는). 이 디렉토리에서는 한 프로세스의 상태를 다른 프로세스에서 복사/시뮬레이트하는 데 필요한 거의 모든 정보를 찾을 수 있습니다.

cgroups프로세스 그룹, 마운트 전파 플래그, Numa 유사성, 더티 페이지, 거대한 페이지, 공유 메모리, 메모리 맵, fd 오프셋 및 , , status, ns/*, fd/*, oom*, io, cmdline, 및... environ의 모든 항목에 세심한 주의를 기울여야 합니다 . maps.음, 주의 깊게 살펴보세요.

어쨌든 올바른 권한을 부여하기만 하면 다음과 같은 모든 파일을 나열할 수 있습니다.

ls -R /proc/"${pid_of_interest}"/

이 옵션을 사용하여 3.3+ 커널을 빌드하면 CONFIG_CHECKPOINT_RESTORE커널이 /proc/$pid/mem_files/심볼릭 링크로 디렉토리를 채울 것입니다.(알라 /proc/$pid/fd/*)mmap()현재 프로세스에서 선언된 모든 "d" 파일 및 다른 프로세스와 공유하는 모든 파일에 대해 .

관련 정보