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

Пауза с сохранением файлов

Передайте keepMemory: false в JavaScript или keep_memory=False в Python, если при паузе нужно сохранить только файловую систему. При возобновлении песочница загружается с диска: файлы остаются, а процессы и данные в памяти — нет.

Сохраняйте нужные данные в файловой системе песочницы, например в /home/user. Каталог /tmp создаётся заново при холодной загрузке и в этом режиме не сохраняется.

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

const sandbox = await Sandbox.create();

try {
  await sandbox.files.write(
    "/home/user/persistent.txt",
    "file survived reboot",
  );
  const process = await sandbox.commands.run("sleep 600", { background: true });

  await sandbox.pause({ keepMemory: false });
  await sandbox.connect();

  console.log(await sandbox.files.read("/home/user/persistent.txt"));
  const status = await sandbox.commands.run(
    `if kill -0 ${process.pid} 2>/dev/null; then printf running; else printf stopped; fi`,
  );
  console.log(`Previous process: ${status.stdout}`);
} finally {
  await sandbox.kill();
}

Параметр относится к одной операции pause. Следующий обычный pause() снова создаст полный снапшот.

Такой режим подходит для рабочих каталогов и результатов сборки на диске. После connect заново запустите нужные сервисы. Не сочетайте его с автоматическим возобновлением: входящий запрос не может восстановить удалённый процесс.