Path: blob/master/src/packages/project/servers/pid-file.ts
1447 views
/*1* This file is part of CoCalc: Copyright © 2022 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import { writeFile } from "node:fs/promises";6import { session_id, start_ts } from "@cocalc/project/consts";7import {8projectPidFile,9sessionIDFile,10startTimestampFile,11} from "@cocalc/project/data";12import { pidUpdateIntervalMs } from "@cocalc/util/project-info";13import { getLogger } from "@cocalc/project/logger";1415const logger = getLogger("pid-file");1617export default async function init() {18logger.debug("init -- writing out initial pid file info");19await Promise.all([20writeFile(projectPidFile, `${process.pid}`),21writeFile(startTimestampFile, `${start_ts}`),22writeFile(sessionIDFile, `${session_id}`),23]);2425// we also write the pid file out periodically so that the server26// knows *this* particular project is really alive and working.27setInterval(async () => {28try {29logger.debug("updating ", projectPidFile);30await writeFile(projectPidFile, `${process.pid}`);31} catch (err) {32// this will likely result in the server killing the project...33logger.debug("ERROR updating ", projectPidFile, err);34}35}, pidUpdateIntervalMs);36}373839