---
title: ProcGroup
description: "One exec's process group, as GET /v1/procs reports it."
---

One exec's process group, as `GET /v1/procs` reports it.

`childExited` beside a non-empty `pids` is the shape worth reading: a command that finished
while something it backgrounded did not, which `Health.busy` cannot show. The `execId`
beside it is what `Session.kill` takes.

## Properties

### childExited

```ts
childExited: boolean;
```

Whether the exec's own child has exited. An acked exec still reads `true`.

***

### execId

```ts
execId: string;
```

The exec this group belongs to — what `kill` takes.

***

### pgid?

```ts
optional pgid?: number;
```

The process group id captured at spawn, or `null` when the child was reaped before it
could be read (then `pids` is empty: there is no group to scan for).

***

### pids

```ts
pids: number[];
```

Live pids whose process group is `pgid`, read from `/proc` inside the guest. Zombies
are not listed. Empty once the group is gone.

***

### reap

```ts
reap: boolean;
```

Whether the exec was started with `reapGroupOnExit`.

***

### startedAt

```ts
startedAt: number;
```

Seconds since the epoch on the daemon's clock when the child was spawned.

## Provenance

This page is generated from `bindings/microvms-js/index.d.ts` by TypeDoc 0.28.20 and typedoc-plugin-markdown 4.13.1, run from `site/scripts/gen-reference.mjs` on every `pnpm run sync`, so an edit made here is overwritten by the next run.

To change the page, change the doc comment in the binding's Rust source, then regenerate the declarations with `mise run dts`. `mise run dts:check` fails when the committed file no longer matches the source.