Перейти к содержимому

Пауза и возобновление

Полная пауза сохраняет файловую систему и оперативную память песочницы. После возобновления процессы и данные в памяти продолжают работу с того же места.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.files.write("/tmp/session.txt", "saved session");
  const process = await sandbox.commands.run("sleep 600", { background: true });

  await sandbox.pause();
  await sandbox.connect();

  console.log(await sandbox.files.read("/tmp/session.txt"));
  const status = await sandbox.commands.run(
    `kill -0 ${process.pid} 2>/dev/null && printf 'process restored'`,
  );
  console.log(status.stdout);
} finally {
  await sandbox.kill();
}

Идентификатор песочницы при паузе не меняется. Сохраните его в приложении и передайте в Sandbox.connect, когда работу нужно продолжить. Для приостановленной песочницы connect выполняет resume, а для работающей создаёт ещё один клиентский объект той же среды.

Соединения приложения с командами, PTY и сервисами внутри песочницы во время паузы закрываются. После возобновления установите их заново.

Если нужно сохранить только файлы, используйте filesystem-only pause. Для запуска новых копий состояния нужны снапшоты.