.. _pg_autoctl_show_file: pg_autoctl show file ============================= pg_autoctl show file - List pg_autoctl internal files (config, state, pid) Synopsis -------- This command the files that ``pg_autoctl`` uses internally for its own configuration, state, and pid:: usage: pg_autoctl show file [ --pgdata --all --config | --state | --init | --pid --contents ] --pgdata path to data directory --all show all pg_autoctl files --config show pg_autoctl configuration file --state show pg_autoctl state file --init show pg_autoctl initialisation state file --pid show pg_autoctl PID file --contents show selected file contents --json output data in the JSON format Description ----------- The ``pg_autoctl`` command follows the `XDG Base Directory Specification`__ and places its internal and configuration files by default in places such as ``~/.config/pg_autoctl`` and ``~/.local/share/pg_autoctl``. __ https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html It is possible to change the default XDG locations by using the environment variables ``XDG_CONFIG_HOME``, ``XDG_DATA_HOME``, and ``XDG_RUNTIME_DIR``. Also, ``pg_config`` uses sub-directories that are specific to a given ``PGDATA``, making it possible to run several Postgres nodes on the same machine, which is very practical for testing and development purposes, though not advised for production setups. Configuration File ^^^^^^^^^^^^^^^^^^ The ``pg_autoctl`` configuration file for an instance serving the data directory at ``/data/pgsql`` is found at ``~/.config/pg_autoctl/data/pgsql/pg_autoctl.cfg``, written in the INI format. It is possible to get the location of the configuration file by using the command ``pg_autoctl show file --config --pgdata /data/pgsql`` and to output its content by using the command ``pg_autoctl show file --config --contents --pgdata /data/pgsql``. See also :ref:`pg_autoctl_config_get` and :ref:`pg_autoctl_config_set`. State File ^^^^^^^^^^ The ``pg_autoctl`` state file for an instance serving the data directory at ``/data/pgsql`` is found at ``~/.local/share/pg_autoctl/data/pgsql/pg_autoctl.state``, written in a specific binary format. This file is not intended to be written by anything else than ``pg_autoctl`` itself. In case of state corruption, see the trouble shooting section of the documentation. It is possible to get the location of the state file by using the command ``pg_autoctl show file --state --pgdata /data/pgsql`` and to output its content by using the command ``pg_autoctl show file --state --contents --pgdata /data/pgsql``. Init State File ^^^^^^^^^^^^^^^ The ``pg_autoctl`` init state file for an instance serving the data directory at ``/data/pgsql`` is found at ``~/.local/share/pg_autoctl/data/pgsql/pg_autoctl.init``, written in a specific binary format. This file is not intended to be written by anything else than ``pg_autoctl`` itself. In case of state corruption, see the trouble shooting section of the documentation. This initialization state file only exists during the initialization of a pg_auto_failover node. In normal operations, this file does not exist. It is possible to get the location of the state file by using the command ``pg_autoctl show file --init --pgdata /data/pgsql`` and to output its content by using the command ``pg_autoctl show file --init --contents --pgdata /data/pgsql``. PID File ^^^^^^^^ The ``pg_autoctl`` PID file for an instance serving the data directory at ``/data/pgsql`` is found at ``/tmp/pg_autoctl/data/pgsql/pg_autoctl.pid``, written in a specific text format. The PID file is located in a temporary directory by default, or in the ``XDG_RUNTIME_DIR`` directory when this is setup. Options ------- --pgdata Location of the Postgres node being managed locally. Defaults to the environment variable ``PGDATA``. Use ``--monitor`` to connect to a monitor from anywhere, rather than the monitor URI used by a local Postgres node managed with ``pg_autoctl``. --all List all the files that belong to this `pg_autoctl` node. --config Show only the configuration file. --state Show only the state file. --init Show only the init state file, which only exists while the command ``pg_autoctl create postgres`` or the command ``pg_autoctl create monitor`` is running, or when than command failed (and can then be retried). --pid Show only the pid file. --contents When one of the options to show a specific file is in use, then ``--contents`` shows the contents of the selected file instead of showing its absolute file path. --json Output JSON formatted data. Environment ----------- PGDATA Postgres directory location. Can be used instead of the ``--pgdata`` option. PG_AUTOCTL_MONITOR Postgres URI to connect to the monitor node, can be used instead of the ``--monitor`` option. XDG_CONFIG_HOME The pg_autoctl command stores its configuration files in the standard place XDG_CONFIG_HOME. See the `XDG Base Directory Specification`__. __ https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html XDG_DATA_HOME The pg_autoctl command stores its internal states files in the standard place XDG_DATA_HOME, which defaults to ``~/.local/share``. See the `XDG Base Directory Specification`__. __ https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html Examples -------- The following examples are taken from a QA environment that has been prepared thanks to the ``make cluster`` command made available to the pg_auto_failover contributors. As a result, the XDG environment variables have been tweaked to obtain a self-contained test:: $ tmux show-env | grep XDG XDG_CONFIG_HOME=/Users/dim/dev/MS/pg_auto_failover/tmux/config XDG_DATA_HOME=/Users/dim/dev/MS/pg_auto_failover/tmux/share XDG_RUNTIME_DIR=/Users/dim/dev/MS/pg_auto_failover/tmux/run Within that self-contained test location, we can see the following examples. :: $ pg_autoctl show file --pgdata ./node1 File | Path --------+---------------- Config | /Users/dim/dev/MS/pg_auto_failover/tmux/config/pg_autoctl/Users/dim/dev/MS/pg_auto_failover/tmux/node1/pg_autoctl.cfg State | /Users/dim/dev/MS/pg_auto_failover/tmux/share/pg_autoctl/Users/dim/dev/MS/pg_auto_failover/tmux/node1/pg_autoctl.state Init | /Users/dim/dev/MS/pg_auto_failover/tmux/share/pg_autoctl/Users/dim/dev/MS/pg_auto_failover/tmux/node1/pg_autoctl.init Pid | /Users/dim/dev/MS/pg_auto_failover/tmux/run/pg_autoctl/Users/dim/dev/MS/pg_auto_failover/tmux/node1/pg_autoctl.pid 'ANY 1 (pgautofailover_standby_2, pgautofailover_standby_3)' $ pg_autoctl show file --pgdata node1 --state /Users/dim/dev/MS/pg_auto_failover/tmux/share/pg_autoctl/Users/dim/dev/MS/pg_auto_failover/tmux/node1/pg_autoctl.state $ pg_autoctl show file --pgdata node1 --state --contents Current Role: primary Assigned Role: primary Last Monitor Contact: Thu Mar 18 17:32:25 2021 Last Secondary Contact: 0 pg_autoctl state version: 1 group: 0 node id: 1 nodes version: 0 PostgreSQL Version: 1201 PostgreSQL CatVersion: 201909212 PostgreSQL System Id: 6940955496243696337 pg_autoctl show file --pgdata node1 --config --contents --json | jq .pg_autoctl { "role": "keeper", "monitor": "postgres://autoctl_node@localhost:5500/pg_auto_failover?sslmode=prefer", "formation": "default", "group": 0, "name": "node1", "hostname": "localhost", "nodekind": "standalone" }