# external_pid_file

> external_pid_file — Writes the postmaster PID to the specified file. Observed in PG9.0–19 Beta 3; its last measured boot default is not set in PG19 Beta 3, with postmaster context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA.
---

> [!NOTE]
> **Fact — official short description:** “Writes the postmaster PID to the specified file.”

## Identity {#identity}

| Field | Value | Meaning |
| --- | --- | --- |
| Type | `string` | Upstream pg_settings type |
| Context | `postmaster` | Requires a server restart |
| Unit | — | Raw unit |
| Range | — | Raw limits in the last observed version |
| Enum values | — | — for non-enum types |
| Category | File Locations | Upstream classification |
| Latest boot value | — | not set |
{.fields meta="-"}

## Lifecycle {#lifecycle}

| Fact | Value |
| --- | --- |
| First observed | PG9.0 (research boundary) |
| Present in | PG9.0–19 Beta 3 |
| Removed in | No |
| Introduction commit | Not asserted: predates the PG9.0 research boundary |
| Commit date | — |
| Discussion | — |

## Default history {#default-history}

| Versions | Raw `boot_val` | Unit | Human value |
| --- | --- | --- | --- |
| PG9.0–19 Beta 3 | — | — | not set |
{.full-width caption="Measured PG9.0–19 Beta 3 boot defaults"}

## How it works {#mechanism}

Writes the postmaster PID to the specified file. The value is fixed when the server starts, so changing it requires a restart.

At startup PostgreSQL writes the postmaster PID to this additional path for external service tooling. postmaster.pid in the data directory remains authoritative for server internals, and the external file must not be used as the sole proof that a process is the intended cluster.

Monitor and change external_pid_file together with allow_alter_system, config_file, data_directory. Validate on the relevant server role and real workload, then use its postmaster context to choose session change, reload, or restart; a historical boot default is not the current effective value.

## Tuning advice {#tuning-advice}

> [!TIP]
> **Advice.** These are workload-specific starting points and must be validated with measurements.

| Workload | Guidance |
| --- | --- |
| OLTP | external_pid_file is deployment topology, not workload tuning. Use an absolute path, least privilege, and atomic configuration rollout; verify access as the postgres service account before restart/reload. |
| OLAP | Follow the OLTP rule, and for separate mounts also verify boot ordering, backup coverage, and path consistency on failover nodes. |
| Small nodes | The default co-located layout is simplest. Split paths only for a concrete backup, packaging, or permission-isolation benefit. |
{.full-width}

## Pigsty {#pigsty}

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

| Template | Effective value | Versus upstream boot | Source expression |
| --- | --- | --- | --- |
| OLTP | Unmodified | — | — |
| OLAP | Unmodified | — | — |
| CRIT | Unmodified | — | — |
| TINY | Unmodified | — | — |
{.full-width}

> [!CAUTION]
> **Advice — pending human review.** Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

## Common pitfalls {#common-pitfalls}

- Missing directory traversal, read, or write permission for the service account.
- Confusing restart requirements for a path with reload behavior of the selected file contents.
- Omitting the path on a failover node or from backup inventory.
- Using a relative path that depends on an unstable working directory.

## Related parameters {#related-parameters}

[`allow_alter_system`](/parameters/allow-alter-system/) · [`config_file`](/parameters/config-file/) · [`data_directory`](/parameters/data-directory/) · [`hba_file`](/parameters/hba-file/) · [`ident_file`](/parameters/ident-file/) · [`extension_destdir`](/parameters/extension-destdir/)

## References {#references}

- [PostgreSQL 19 Beta 3 — external_pid_file](https://www.postgresql.org/docs/19/runtime-config-file-locations.html#GUC-EXTERNAL-PID-FILE)
- [PostgreSQL 19 release notes](https://www.postgresql.org/docs/19/release-19.html)
- [Machine-readable GUC export](/data/guc.jsonl)
