onnode - Man Page

run commands on CTDB cluster nodes

Synopsis

onnode [OPTION...] {NODES} {COMMAND}

Description

onnode is a utility to run commands on a specific node of a CTDB cluster, or on all nodes​.

NODES specifies which node(s) to run a command on​. See section Nodes Specification for details​.

COMMAND can be any shell command​. The onnode utility uses ssh or rsh to connect to the remote nodes and run the command​.

Options

-c

Execute COMMAND in the current working directory on the specified nodes​.

-f FILENAME

Specify an alternative nodes FILENAME to use instead of the default​. See the discussion of /etc/ctdb/nodes in the Files section for more details​.

-i

Keep standard input open, allowing data to be piped to onnode​. Normally onnode closes stdin to avoid surprises when scripting​. Note that this option is ignored when using -p or if ONNODE_SSH is set to anything other than "ssh"​.

-n

Allow nodes to be specified by name rather than node numbers​. These nodes don't need to be listed in the nodes file​. You can avoid the nodes file entirely by combining this with -f /dev/null​.

-p

Run COMMAND in parallel on the specified nodes​. The default is to run COMMAND sequentially on each node​.

-P

Push files to nodes​. Names of files to push are specified rather than the usual command​. Quoting is fragile/broken - filenames with whitespace in them are not supported​.

-q

Do not print node addresses​. Normally, onnode prints informational node addresses if more than one node is specified​. This overrides -v​.

-v

Print node addresses even if only one node is specified​. Normally, onnode prints informational node addresses when more than one node is specified​.

-h,  --help

Show a short usage guide​.

Nodes Specification

Nodes can be specified via numeric node numbers (from 0 to N-1) or mnemonics​. Multiple nodes are specified using lists of nodes, separated by commas, and ranges of numeric node numbers, separated by dashes​. If nodes are specified multiple times then the command will be executed multiple times on those nodes​. The order of nodes is significant​.

The following mnemonics are available:

all

All nodes​.

any

A node where ctdbd is running​. This semi-random but there is a bias towards choosing a low numbered node​.

ok | healthy

All nodes that are not disconnected, banned, disabled or unhealthy​.

con | connected

All nodes that are not disconnected​.

Examples

The following command would show the process ID of ctdbd on all nodes

      onnode all ctdb getpid

The following command would show the last 5 lines of log on each node, preceded by the node's hostname

      onnode all "hostname; tail -5 /var/log/log​.ctdb"

The following command would restart the ctdb service on all nodes, in parallel​.

      onnode -p all service ctdb restart

The following command would run ​./foo in the current working directory, in parallel, on nodes 0, 2, 3 and 4​.

      onnode -c -p 0,2-4 ​./foo

Files

/etc/ctdb/nodes

Default file containing a list of each node's IP address or hostname​.

As above, a file specified via the -f is given precedence​. If a relative path is specified and no corresponding file exists relative to the current directory then the file is also searched for in the CTDB configuration directory​.

Otherwise the default is /etc/ctdb/nodes​.

/etc/ctdb/onnode​.conf

If this file exists it is sourced by onnode​. The main purpose is to allow the administrator to set ONNODE_SSH to something other than "ssh"​. In this case the -t option is ignored​.

See Also

ctdb(7), http://ctdb.samba.org/

Author

This documentation was written by Andrew Tridgell, Martin Schwenke

Info

10/01/2026 CTDB - clustered TDB database