遊びたいクルー、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
回復は機能しません。中断された部分からループプロセスを再開する必要があります。プロセスはコンソールから印刷を続ける必要がありますが、何も起こりません。エラーメッセージもありません。
私のシステム:
Ubuntu19.04
クルー3.8.1
ベストアンサー1
あなたは読まなければなりません文書近くに:
実行(分離)
今、単にこのようなプログラムを実行してダンプしようとすると、cruuは失敗します。その理由は、シェルで起動されたプログラムがシェルといくつかの共通リソース、特にセッションと端末を共有するためです。 Criuには、そのようなリソースが存在しないことを確認するチェック機能が組み込まれています。
現在の端末から依存関係を削除するには、新しいセッションでスクリプトを実行し、その出力をファイルにリダイレクトします。
$setsid./test.sh</dev/null&>test.log&[2]2220[2]+完全な
setid./test.sh</dev/null&>test.log