cru: 안녕하세요 세상이 작동하지 않아요

cru: 안녕하세요 세상이 작동하지 않아요

나는 놀고 싶다크루, Linux 프로세스의 체크포인트/복구를 위한 프로젝트입니다. 이를 위해 체크포인트 및 복원 기능을 제공하는 criu의 hello-world를 사용하고 있습니다.간단한 루프.

나는 다음 단계를 수행했습니다.

간단한 루프 프로그램을 만듭니다.

$ cat > test.sh <<-EOF
#!/bin/sh
while :; do
    sleep 1
    date
done
EOF
$ chmod +x test.sh

달리다:

$ ./test.sh
$ ps -C test.sh
  PID TTY          TIME CMD
  2621 pts/1    00:00:00 test.sh

버려:

# sudo criu dump -vvvv -o dump.log -t 2621 --shell-job && echo OK
OK

복원하려면:

#  sudo criu restore -vvvv -o restore.log --shell-job

복구가 작동하지 않습니다. 중단된 부분부터 루프 프로세스를 다시 시작해야 합니다. 프로세스는 콘솔에서 계속 인쇄되어야 하지만 아무 일도 일어나지 않습니다. 오류 메시지도 없습니다.

내 시스템:

우분투19.04

크루 3.8.1

답변1

너는 읽어야 해문서더 가까이:

실행(격리)

이제, 단순히 이와 같은 프로그램을 실행하고 덤프하려고 시도하면 cruu는 실패할 것입니다. 그 이유는 셸에서 시작된 프로그램이 셸과 일부 공통 리소스, 특히 세션 및 터미널을 공유하기 때문입니다. Criu에는 그러한 리소스가 존재하지 않는지 확인하는 검사 기능이 내장되어 있습니다.

현재 터미널에서 종속성을 제거하려면 새 세션에서 스크립트를 실행하고 해당 출력을 파일로 리디렉션해 보겠습니다.

$setsid./test.sh</dev/null&>test.log&[2]2220[2]+완전한
setid./test.sh</dev/null&>test.log

답변2

이 일련의 명령은 내 시스템에서 작동합니다.

sudo criu dump --images-dir ~/checkpoint --tree 2459 --shell-job

sudo criu restore -D ~/checkpoint --shell-job

관련 정보