---
name: "poundctl"
section: "8"
platform: "linux"
package: "pound"
version: "4.16-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/poundctl"
---

# poundctl(8)

control the pound daemon

## NAME

poundctl - control the pound daemon

## SYNOPSIS

**poundctl** \[**-kVvh**\] \[**-C** *FILE*\] \[**-f** *FILE*\] \[**-i** *N*\] \[**-j**\] \[**-K** *FILE*\] \[**-S** *NAME*\] \[**-s** *SOCKET*\] \[**-T** *TEMPLATE-FILE*\] \[**-t** *TEMPLATE-NAME*\] *COMMAND* \[**/***L***/***S***/***B*\] \[*ARG*\]

## DESCRIPTION

Displays status and controls various objects in the running instance of [**pound**(8)](/pound/8.md) proxy server.

The program communicates with the running **pound** program via a UNIX *control socket*, or remotely, via HTTP.  The URL of the control socket is looked up in the following locatiions, in that order:

- **~/.poundctl**

  Main **poundctl** configuration file.

- **pound.cfg**

  The program scans it for a **Control** statement and obtains control socket name from it.

- Argument of the

  **-s** command line option.

The *COMMAND* argument instructs the program what action it is supposed to perform.  Missing *COMMAND* is equivalent to **list**. All commands take the **/***L***/***S***/***B* argument, which specifies the **pound** object to apply the command to.  Here, *L*, *S*, and *B* stand for the identifiers of *listener*, *service* and *backend*, correspondingly.  For listeners and services, both numeric identifiers or symbolic names are allowed.  Numeric identifiers refer to the ordinal number of the listener in the configuration file, or service within the enclosing listener (or in the configuration file, if *L* is **-**, see below). Symbolic names refer to the names assigned with the corresponding **ListenHTTP**, **ListenHTTPS**, or **Service** statement in the configuration file.  The identifier *B* is always numeric and refers to the ordinal number of the backend in the service.

Depending on the command, either *B* or both /*S*/*B*/ may be omitted.  For example, the following command will disable backend 2 in service 1 of listener 0:

```
poundctl disable /0/1/2
```

In contrast, the following command disables the listener 0 itself:

```
poundctl disable /0
```

A dash in place of *L* stands for global scope.  Thus, e.g.:

```
poundctl disable /-/1
```

disables the service 1 defined in the global scope of **pound.cfg**.

The following commands are available:

- **list** **/***L***/***S***/***B*

  List status of the given object and its subordinates.  Without argument, shows all listeners and underlying objects.

- **enable** **/***L***/***S***/***B*

  Enable listener, service, or backend.

- **on** **/***L***/***S***/***B*

  Same as **enable**.

- **disable** **/***L***/***S***/***B*

  Disable listener, service, or backend.

- **off** **/***L***/***S***/***B*

  Same as **disable**.

- **delete** **/***L***/***S* *KEY*

  Delete the session with the given key.  Notice that backend may not be specified.

- **add** **/***L***/***S***/***B* *KEY*

  Add a session with the given key.

## CONFIGURATION

Configuration is read from file **.poundctl** located in the user home directory.  It is not an error if that file does not exist.

Alternative location of the configuration file can be specified via the **POUNDCTL\_CONF** environment variable.  Setting that variable to an empty value disables the configuration.

The file consists of simple statements and sections, delimited by any amount of newlines.  Comments are introduced by **#R sign and** **extend to the end of physical line where it appears.**

**Simple statements consist of a keyword and value separated by any** **amount of whitespace.  Leading and trailing whitespace is ignored.**

**Sections begin with a keyword and value separated by any** **amount of whitespace as well.  They are followed by a newline and any** **number of statements belonging to that section.  Sections end with a** **word** **End** **on a line by itself.**

**The following statements are defined:**

- **URL "***URL***"**

  Sets the URL of the @command{pound} management socket.  The value is either a file name of a UNIX socket file, or a remote URL (http or https).

- **CAFile "***FILE***"**

  Read certificate authority certificate from *FILE*.

- **CAPath "***DIR***"**

  Read certificate authority certificates from PEM files located in the directory *DIR*.

- **ClientCert "***FILE***"**

  Read client certificate and private key from *FILE*.  Use this if **pound** configuration requires client authentication using the **ClientCert** statement.

- **Verify** *bool*

  Enables or disables peer certificate verification.  The default is **on**.

- **TemplateFile "***FILE***"**

  Name of the template file (see below).

- **TemplateName "***NAME***"**

  Name of the template to use.

- **TemplatePath "***FILE***"**

  Search path for template files.

Multiple **Server** sections can appear in the file.  They provide a convenient way to organize management of multiple **pound** servers.  You define the settings for each remote **pound** servers (URL, etc.) in a separate **Server** section identified by a unique name.  Then, when you need to manage that particular server, you identify it by using the **-S** *NAME* command line option.

Syntactically, each section is

```
Server "NAME"
  ...
End
```

where ellipsis denotes one or more of the following statements: **URL**, **CAFile**, **CAPath**, **ClientCert**, **Verify**.

## TEMPLATES

Information received from **pound** is formatted as a JSON object.  To produce human-readable output, **poundctl** uses a *template*, i.e. a text written in a domain-specific language expressly designed for that purpose.  The template language complies, in general, with the specification in \<https://pkg.go.dev/text/template\>.  Refer to [**poundctl.tmpl**(5)](/poundctl.tmpl/5.md), for a detailed description.

Templates are looked up in template file **poundctl.tmpl**. This file is searched in template search path which is, by default, the file **.poundctl.tmpl** in the user home directory and the file **poundctl.tmpl** (without the leading dot) in the *program* *data directory*, normally **/usr/share/pound**.  The default search path can be changed from configuration file, using the **TemplatePath** statement of by setting the environment variable **POUND\_TMPL\_PATH**, which see.  To examine the default value of the search path, use the **-V** command line option.

The template file to use can be requested from the configuration file, via the **TemplateFile** statement, or from the command line using the **-t** option.  In this case, template search path in not searched and the supplied file is used verbatim.

Unless instructed otherwise, **poundctl** uses the template "default".  You can request another template name using the **TemplateName** configuration statement, or from command line, using the **-T** option.

The default **poundctl.tmpl** file defines two templates: **default** and **xml**.

## OPTIONS

- **-C** *FILE*

  Load certificate authority files from *FILE*.  *FILE* can also be a directory containing CA certificates in PEM format.

- **-f** *FILE*

  Location of **pound** configuration file.

- **-i** *N*

  Sets indentation level for JSON output.

- **-j**

  JSON output format.

- **-K** *FILE*

  Load client certificate and key from *FILE* and send them to the server during handshake for authentication.

- **-k**

  Disable peer verification.

- **-h**

  Shows a short help output and exit.

- **-S** *NAME*

  Operate on server defined in **.poundctl** file, section **Server "***NAME***"**.

- **-s** *SOCKET*

  Sets control socket pathname.  *SOCKET* can also be a URL in the form:

-

  {**http**\|**https**}**://**\[*USER*\[**:***PASS*\]**@**\]*HOSTNAME*\[**:***PORT*\]\[**/***PATH*\]

-

  where **{\|}** denote alternative forms and **\[\]** enclose optional parts.

- **-T** *TEMPLATE-FILE*

  Sets the name of the template file to use.

- **-t** *TEMPLATE-NAME*

  Defines the name of the template to use instead of the "default".

- **-V**

  Print program version, compilation settings, and exit.

- **-v**

  Increases output verbosity level.

## ENVIRONMENT

- **POUNDCTL\_CONF**

  Alternative name for the default configuration file.  Unless absolute, the file is searched in the user home directory.  Empty value restores built-in defaults.

- **POUND\_TMPL\_PATH**

  Overrides the template search path.  The value is a column-delimited list of directories or file names.  To locate the template file, the path is scanned left-to right.  If an element is a regular file name (or a hard or symbolic link to a regular file), **poundctl** tries to open that file.  If an element is a directory name, the program tries to open the file **poundctl.tmpl** in that directory.  If opening succeeds, further scanning stops and templates are read from that file.

## SEE ALSO

[**pound**(8)](/pound/8.md), [**poundctl.tmpl**(5)](/poundctl.tmpl/5.md).

## AUTHOR

Written by Robert Segall, Apsis GmbH, and Sergey Poznyakoff.

## REPORTING BUGS

Report bugs to \<gray@gnu.org\>.  You may also use github issue tracker at https://github.com/graygnuorg/pound/issues.

## COPYRIGHT

Copyright © 2002-2010 Apsis GmbH.\
 Copyright © 2018-2025 Sergey Poznyakoff

License GPLv3+: GNU GPL version 3 or later \<http://gnu.org/licenses/gpl.html\>

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
