usr/src/cmd/pdsh/sunman/pdsh.1
author Cyril Plisko <cyril.plisko@grigale.com>
Tue, 06 Apr 2010 16:00:14 +0300
changeset 11 87960ed158f9
parent 0 b34509ac961f
permissions -rw-r--r--
Import sfw build 137 Bugs Fixed ---------- 6926835 Wireshark cannot open files typed into the location bar 6930214 CVE-2010-0624: Heap-based buffer overflow in GNU Tar 6933424 Various sfw manual pages need to be adjusted to use the new OpenSolaris package names. 6937764 upgrade OpenSSL to 0.9.8n (and fix CVE-2010-0740)

'\" t
.\" CDDL HEADER START
.\"
.\" The contents of this file are subject to the terms of the
.\" Common Development and Distribution License (the "License").
.\" You may not use this file except in compliance with the License.
.\"
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
.\" or http://www.opensolaris.org/os/licensing.
.\" See the License for the specific language governing permissions
.\" and limitations under the License.
.\"
.\" When distributing Covered Code, include this CDDL HEADER in each
.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
.\" If applicable, add the following below this CDDL HEADER, with the
.\" fields enclosed by brackets "[]" replaced with your own identifying
.\" information: Portions Copyright [yyyy] [name of copyright owner]
.\"
.\" CDDL HEADER END
.\"
.\" Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
.\" Use is subject to license terms.
.\"
.\" ident	"@(#)pdsh.1	1.2	10/03/16 SMI"
.\"
.\"
\." $Id: pdsh.1.in 1177 2009-03-24 21:46:00Z grondo $
.TH "pdsh" "1" "solaris2.11" "pdsh-2.18"

.SH NAME
pdsh \- issue commands to groups of hosts in parallel

.SH SYNOPSIS
\fBpdsh\fR [\fIoptions\fR]... command

.SH DESCRIPTION
\fBpdsh\fR is a variant of the rsh(1) command. Unlike rsh(1), which runs
commands on a single remote host, \fBpdsh\fR can run multiple remote commands
in parallel. \fBpdsh\fR uses a "sliding window" (or \fIfanout\fR) of threads
to conserve resources on the initiating host while allowing some
connections to time out.
.LP
When \fBpdsh\fR receives SIGINT (ctrl-C), it lists the status of current
threads. A second SIGINT within one second terminates the program. Pending
threads may be canceled by issuing ctrl-Z within one second of ctrl-C.
Pending threads are those that have not yet been initiated, or are still
in the process of connecting to the remote host.

.LP
If a remote command is not specified on the command line, \fBpdsh\fR
runs interactively, prompting for commands and executing them when
terminated with a carriage return. In interactive mode, target nodes
that time out on the first command are not contacted for subsequent
commands, and commands prefixed with an exclamation point will be
executed on the local system.
.LP
The core functionality of \fBpdsh\fR may be supplemented by dynamically
loadable modules. The modules may provide a new connection protocol
(replacing the standard rcmd(3) protocol used by rsh(1)), filtering
options (e.g. removing hosts that are "down" from the target list),
and/or host selection options. By default, \fBpdsh\fR must have at least
one "rcmd" module loaded. See the \fBRCMD MODULES\fR section for more
information.

.SH "RCMD MODULES"
The method by which \fBpdsh\fR runs commands on remote hosts may be
selected at runtime using the \fI-R\fR option (See \fIOPTIONS\fR below).
This functionality is ultimately implemented via dynamically loadable
modules, and so the list of available options may be different
from installation to installation. A list of currently available rcmd
modules is printed when using any of the \fI-h\fR, \fI-V\fR, or \fI-L\fR
options. The default rcmd module will also be displayed with the
\fI-h\fR and \fI-V\fR options.
.LP
A list of \fIrcmd\fR modules currently distributed with \fBpdsh\fR
follows.
.TP 8
rsh
Uses an internal, thread-safe implementation of BSD rcmd(3)
to run commands using the standard rsh(1) protocol.
.TP
exec
Executes an arbitrary command for each target host. The first
of the \fBpdsh\fR remote arguments is the local command
to execute, followed by any further arguments. Some simple
parameters are substitued on the command line, including
\fI%h\fR for the target hostname, \fI%u\fR for the remote
username, and \fI%n\fR for the remote rank [0-n] (To get
a literal \fI%\fR use \fI%%\fR).  For example,
the following would duplicate using the \fBssh\fR module to
run \fBhostname\fR(1) across the hosts foo[0-10]:

.nf
   pdsh -R exec -w foo[0-10] ssh -x -l %u %h hostname
.fi

and this command line would run \fBgrep\fR(1) in parallel
across the files console.foo[0-10]:

.nf
   pdsh -R exec -w foo[0-10] grep BUG console.%h
.fi

.TP
ssh
Uses a variant of popen(3) to run multiple copies of the ssh(1)
command.

.SH OPTIONS
The list of available options is determined at runtime
by supplementing the list of standard \fBpdsh\fR options with
any options provided by loaded \fIrcmd\fR and \fImisc\fR modules.
In some cases, options provided by modules may conflict with
each other. In these cases, the modules are incompatible and
the first module loaded wins.

.SH "Standard target nodelist options"
.TP
.I "-w [rcmd_type:][user@]host,host,..."
Target the specified list of hosts. Do not use with any other
node selection options (e.g. \fI\a\fR, \fI\-g\fR if they are
available). No spaces are allowed in the comma-separated list.
A list consisting of a single `-' character causes the target
hosts to be read from stdin, one per line. The host list may
contain hostlist expressions of the form ``host[1-5,7]''. For
more information about the hostlist format, see the
\fBHOSTLIST EXPRESSIONS\fR section below. A list of hosts
may also be preceded by "user@" to specify a remote username
other than the default, or "rcmd_type:" to specify an alternate
rcmd connection type for these hosts. When used together,
the rcmd type must be specified first, e.g. "ssh:user1@host0"
would use ssh to connect to host0 as user "user1."
.TP
.I "-x host,host,..."
Exclude the specified hosts. May be specified in conjunction with
other target node list options such as \fI\-g\fR (when available).
Hostlists may also be specified to the \fI\-x\fR option
(see the \fBHOSTLIST EXPRESSIONS\fR section below).

.SH "Standard pdsh options"
.TP
.I "-S"
Return the largest of the remote command return values.
.TP
.I "-h"
Output usage menu and quit. A list of available rcmd modules
will also be printed at the end of the usage message.
.TP
.I "-q"
List option values and the target nodelist and exit without action.
.TP
.I "-b"
Disable ctrl-C status feature so that a single ctrl-C kills parallel
job. (Batch Mode)
.TP
.I "-l user"
This option may be used to run remote commands as another user, subject to
authorization. For BSD rcmd, this means the invoking user and system must
be listed in the user\'s .rhosts file (even for root).
.TP
.I "-t seconds"
Set the connect timeout. Default is 10 seconds.
.TP
.I "-u seconds"
Set a limit on the amount of time a remote command is allowed to execute.
Default is no limit. See note in LIMITATIONS if using \fI-u\fR with ssh.
.TP
.I "-f number"
Set the maximum number of simultaneous remote commands to \fInumber\fR.
The default is 32.
.TP
.I "-R name"
Set rcmd module to \fIname\fR. This option may also be set via the
PDSH_RCMD_TYPE environment variable. A list of available rcmd
modules may be obtained via the \fI-h\fR, \fI-V\fR, or \fI-L\fR options.
The default will be listed with \fI-h\fR or \fI-V\fI.
.TP
.I "-L"
List info on all loaded \fBpdsh\fR modules and quit.
.TP
.I "-N"
Disable hostname: prefix on lines of output.
.TP
.I "-d"
Include more complete thread status when SIGINT is received, and display
connect and command time statistics on stderr when done.
.TP
.I "-V"
Output \fBpdsh\fR version information, along with list of currently
loaded modules, and exit.

.SH "ENVIRONMENT VARIABLES"
.PP
.TP
PDSH_RCMD_TYPE
Equivalent to the \fI-R\fR option, the value of this environment
variable will be used to set the default rcmd module for pdsh to
use (e.g. ssh, rsh).
.TP
PDSH_SSH_ARGS
Override the standard arguments that \fBpdsh\fR passes to the
ssh(1) command ("-2 -x").
.TP
PDSH_SSH_ARGS_APPEND
Append additional options to the ssh(1) command invoked by \fBpdsh\fR.
For example, PDSH_SSH_ARGS_APPEND="-q" would run ssh in quiet mode,
or "-v" would increase the verbosity of ssh.
.TP
WCOLL
If no other node selection option is used, the WCOLL environment
variable may be set to a filename from which a list of target
hosts will be read. The file should contain a list of hosts,
one per line (though each line may contain a hostlist expression.
See \fIHOSTLIST EXPRESSIONS\fR section below).
.TP
DSHPATH
If set, the path in DSHPATH will be used as the PATH for the
remote processes.
.TP
FANOUT
Set the \fBpdsh\fR fanout (See description of \fI-f\fR above).

.SH "HOSTLIST EXPRESSIONS"
As noted in sections above \fBpdsh\fR accepts lists of hosts the general
form: prefix[n-m,l-k,...], where n < m and l < k, etc., as an alternative
to explicit lists of hosts. This form should not be confused with regular
expression character classes (also denoted by ``[]''). For example, foo[19]
does not represent an expression matching foo1 or foo9, but rather
represents the degenerate hostlist: foo19.

The hostlist syntax is meant only as a convenience on clusters with a
"prefixNNN" naming convention and specification of ranges should not be
considered necessary -- this foo1,foo9 could be specified as such, or
by the hostlist foo[1,9].

Some examples of usage follow:

.nf

Run command on foo01,foo02,...,foo05
    pdsh -w foo[01-05] command

Run command on foo7,foo9,foo10
    pdsh -w foo[7,9-10] command

Run command on foo0,foo4,foo5
    pdsh -w foo[0-5] -x foo[1-3] command

.fi

A suffix on the hostname is also supported:

.nf

Run command on foo0-eth0,foo1-eth0,foo2-eth0,foo3-eth0
   pdsh -w foo[0-3]-eth0 command

.fi

As a reminder to the reader, some shells will interpret brackets ('['
and ']') for pattern matching.  Depending on your shell, it may be
necessary to enclose ranged lists within quotes.  For example, in
tcsh, the first example above should be executed as:

    pdsh -w "foo[01-05]" command

.SH "ORIGIN"
Originally a rewrite of IBM dsh(1) by Jim Garlick <[email protected]>
on LLNL's ASCI Blue-Pacific IBM SP system. It is now used on Linux clusters
at LLNL.

.SH "LIMITATIONS"
.LP
When using \fBssh\fR for remote execution, expect the stderr of ssh to be
folded in with that of the remote command. When invoked by \fBpdsh\fR, it
is not possible for \fBssh\fR to prompt for passwords if RSA/DSA keys
are configured properly, etc..  For \fBssh\fR implementations that suppport
a connect timeout option, \fBpdsh\fR attempts to use that option to
enforce the timeout (e.g. -oConnectTimeout=T for OpenSSH), otherwise
connect timeouts are not supported when using \fBssh\fR.  Finally, there
is no reliable way for \fBpdsh\fR to ensure that remote commands are
actually terminated when using a command timeout. Thus if \fI-u\fR is
used with \fBssh\fR commands may be left running on remote hosts even
after timeout has killed local \fBssh\fR processes.

The number of nodes that \fBpdsh\fR can simultaneously execute remote
jobs on is limited by the maximum number of threads that can be created
concurrently, as well as the availability of reserved ports in the rsh
rcmd modules. On systems that implement Posix threads, the limit
is typically defined by the constant PTHREADS_THREADS_MAX.

.SH "FILES"
 
.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp

.sp
.TS
box;
cbp-1 | cbp-1
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
=
Availability	shell/pdsh
=
Interface Stability	Uncommitted
.TE
.SH "SEE ALSO"
rsh(1), ssh(1), dshbak(1), pdcp(1)
http://sourceforge.net/projects/pdsh/
.SH "NOTES"
Source for pdsh is available on http://opensolaris.org