POUNDCTL(8)
πΈ NAME πΈ
poundctl β control the pound daemon π
that's the whole job, and she does it gorgeously.
β¨ 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]
okay bestie, the [...] bits are optional and we'll get to every single one of them, promise π«Ά
π¦ DESCRIPTION π¦
So poundctl displays status and controls various objects in the running instance of the pound(8) proxy server. It's giving "I have admin access and I'm not afraid to use it" energy, no cap π
The program talks to the running pound program via a UNIX control socket, or remotely, via HTTP. And the URL of the control socket? It's looked up in the following locations, in that exact order:
~/.poundctlβ the mainpoundctlconfiguration file.pound.cfgβ the program scans it for aControlstatement and obtains the control socket name from it.- Argument of the
-scommand line option.
π commands & the /L/S/B situation
The COMMAND argument tells the program what action it's supposed to perform. A missing COMMAND is equivalent to list. Every command takes 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, this one disables backend 2 in service 1 of listener 0:
poundctl disable /0/1/2
In contrast, this one disables the listener 0 itself:
poundctl disable /0
A dash in place of L stands for global scope. So, e.g.:
poundctl disable /-/1
disables the service 1 defined in the global scope of pound.cfg. Global. Scope. Iconic π
π the commands themselves
The following commands are available:
coreβ Show core status: daemon PID, uptime, worker statistics, etc.list /L/S/Bβ List status of the given object and its subordinates. Without argument, shows all listeners and underlying objects.log [/]β Show global log level.log /Lβ Show log level configured for listenerL.log /[L] Fβ Set log levelFglobally (if the first argument is/) or for the listenerL.
Heads up π«ΆFmust be a symbolic name of a built-in format or a format defined with theLogFormatconfiguration keyword. Like, don't just make one up, she WILL notice.
log -d [/L]β Delete (clear) log level settings. Without arguments, or with/as an argument, clears global log level β this is equivalent to setting it to null. If the argument is/L, the log level setting of the listenerLis cleared, resulting in the global log level being applied to it.enable /L/S/Bβ Enable listener, service, or backend. β¨on /L/S/Bβ Same asenable.disable /L/S/Bβ Disable listener, service, or backend. πoff /L/S/Bβ Same asdisable.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. And no, it is not an error if that file does not exist β she's chill like that π
An 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 entirely.
The file consists of simple statements and sections, delimited by any amount of newlines. Comments are introduced by a # sign and extend to the end of the 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. Cute, structured, organized β we love a tidy config π
The following statements are defined:
URL "URL"β Sets the URL of thepoundmanagement 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 fromFILE.CAPath "DIR"β Read certificate authority certificates from PEM files located in the directoryDIR.ClientCert "FILE"β Read client certificate and private key fromFILE. Use this if pound configuration requires client authentication using theClientCertstatement.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.
π Server sections
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 server (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 the 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) for a detailed description.
Templates are looked up in template file poundctl.tmpl. This file is searched in the 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 the configuration file, using the TemplatePath statement, or 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, the template search path is not searched and the supplied file is used verbatim. No searching, no guessing, just vibes.
Unless instructed otherwise, poundctl uses the template default. You can request another template name using the TemplateName configuration statement, or from the command line, using the -T option.
The default poundctl.tmpl file defines two templates: default and xml. Two icons, one file. Slay π
π OPTIONS π
-C FILEβ Load certificate authority files fromFILE.FILEcan 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. Pretty-print her, she deserves it πΈ-jβ JSON output format.-K FILEβ Load client certificate and key fromFILEand send them to the server during handshake for authentication.-kβ Disable peer verification. (Yes, this is the lowercase twin of-Kand yes, they do completely different things β stay woke π)-hβ Shows a short help output and exit.-S NAMEβ Operate on server defined in.poundctlfile, sectionServer "NAME".-s SOCKETβ Sets control socket pathname.SOCKETcan 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. Morev? No β she just gets louder. π’
π 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),poundctltries to open that file. If an element is a directory name, the program tries to open the filepoundctl.tmplin that directory. If opening succeeds, further scanning stops and templates are read from that file. First match wins, periodt β
π₯ SEE ALSO π₯
π AUTHOR π
Written by Robert Segall, Apsis GmbH, and Sergey Poznyakoff.
π REPORTING BUGS π
Report bugs to <gray@gnu.org>. You may also use the github issue tracker at https://github.com/graygnuorg/pound/issues. Found something cursed? Tell the maintainers, not your group chat π
π COPYRIGHT π
Copyright Β© 2002-2010 Apsis GmbH. Copyright Β© 2018β2026 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.
Fr fr, no warranty β read that twice, bestie π
okay that's the whole thing, and honestly? she ate π
This was poundctl from the System Manager's Manual, dated April 24, 2026, page POUNDCTL(8) β go control your daemon, you absolute main character π¦β¨
π¦ where this page comes from
- alpine 3.24: pound-doc 4.23-r0 Β· GPL-3.0-or-later
- Copyright (C) 2002-2010 Apsis GmbH
- Copyright (C) 2018-2026 Sergey Poznyakoff
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms