Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
pdsh(1) 		     General Commands Manual			 pdsh(1)

NAME
     pdsh - issue commands to groups of hosts in parallel

SYNOPSIS
     pdsh [options]... command

DESCRIPTION
     pdsh is a variant of the rsh(1) command. Unlike rsh(1), which runs commands
     on a single remote host, pdsh can run multiple remote commands in parallel.
     pdsh  uses  a "sliding window" (or fanout) of threads to conserve resources
     on the initiating host while allowing some connections to time out.

     When pdsh 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.

     If  a remote command is not specified on the command line, pdsh runs inter-
     actively, 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  pre-
     fixed with an exclamation point will be executed on the local system.

     The  core functionality of pdsh 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
     (e.g., -a selects all hosts from a configuration file.). By  default,  pdsh
     must  have  at least one "rcmd" module loaded. See the RCMD MODULES section
     for more information.

RCMD MODULES
     The method by which pdsh runs commands on remote hosts may be  selected  at
     runtime using the -R option (See OPTIONS below).  This functionality is ul-
     timately  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
     -h, -V, or -L options. The default rcmd module will also be displayed  with
     the -h and -V options.

     A list of rcmd modules currently distributed with pdsh follows.

     rsh     Uses  an internal, thread-safe implementation of BSD rcmd(3) to run
	     commands using the standard rsh(1) protocol.

     exec    Executes an arbitrary command for each target host.  The  first  of
	     the pdsh remote arguments is the local command to execute, followed
	     by  any further arguments. Some simple parameters are substitued on
	     the command line, including %h for the target hostname, %u for  the
	     remote username, and %n for the remote rank [0-n] (To get a literal
	     %	use  %%).   For example, the following would duplicate using the
	     ssh module to run hostname(1) across the hosts foo[0-10]:

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

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

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

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

     mrsh    This module uses the mrsh(1) protocol to  execute	jobs  on  remote
	     hosts.   The  mrsh protocol uses a credential based authentication,
	     forgoing the need to allocate reserved ports. In other aspects,  it
	     acts  just like rsh. Remote nodes must be running mrshd(8) in order
	     for the mrsh module to work.

     krb4    The krb4 module allows users to execute remote commands  after  au-
	     thenticating with kerberos. Of course, the remote rshd daemons must
	     be kerberized.

     xcpu    The xcpu module uses the xcpu service to execute remote commands.

OPTIONS
     The list of available options is determined at runtime by supplementing the
     list  of standard pdsh options with any options provided by loaded rcmd and
     misc modules.  In some cases, options provided by modules may conflict with
     each other. In these cases, the modules are incompatible and the first mod-
     ule loaded wins.

Standard target nodelist options
     -w TARGETS,...
	    Target and or filter the specified list of hosts. Do  not  use  with
	    any  other	node  selection options (e.g. -a, -g, if they are avail-
	    able). No spaces are allowed in the comma-separated list.  Arguments
	    in the TARGETS list may include normal host names, a range of  hosts
	    in hostlist format (See HOSTLIST EXPRESSIONS), or a single `-' char-
	    acter to read the list of hosts on stdin.

	    If	a  host  or hostlist is preceded by a `-' character, this causes
	    those hosts to be explicitly excluded. If the argument  is	preceded
	    by	a  single `^' character, it is taken to be the path to file con-
	    taining a list of hosts, one per line. If the item begins with a `/'
	    character, it is taken  as a regular expression on which  to  filter
	    the  list  of hosts (a regex argument may also be optionally trailed
	    by another '/', e.g.  /node.*/). A regex or file name  argument  may
	    also  be  preceeded  by  a	minus  `-' to exclude instead of include
	    thoses hosts.

	    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 al-
	    ternate 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."

     -x host,host,...
	    Exclude the specified hosts. May be specified  in  conjunction  with
	    other  target  node list options such as -a and -g (when available).
	    Hostlists may also be specified to the -x option (see  the	HOSTLIST
	    EXPRESSIONS section below). Arguments to -x may also be preceeded by
	    the filename (`^') and regex ('/') characters as described above, in
	    which  case  the  resulting  hosts	are excluded as if they had been
	    given to -w and preceeded with the minus `-' character.

Standard pdsh options
     -S     Return the largest of the remote command return values.

     -h     Output usage menu and quit. A list of available  rcmd  modules  will
	    also be printed at the end of the usage message.

     -s     Only  on  AIX,  separate  remote  command stderr and stdout into two
	    sockets.

     -q     List option values and the target nodelist and exit without action.

     -b     Disable ctrl-C status feature so that a single ctrl-C kills parallel
	    job. (Batch Mode)

     -l user
	    This option may be used to run remote commands as another user, sub-
	    ject to authorization. For BSD rcmd, this means  the  invoking  user
	    and  system  must  be  listed  in  the user's .rhosts file (even for
	    root).

     -t seconds
	    Set the connect timeout. Default is 10  seconds.   This  option  may
	    also be set via the PDSH_CONNECT_TIMEOUT environment variable.

     -u seconds
	    Set a limit on the amount of time a remote command is allowed to ex-
	    ecute.   Default  is  no  limit. See note in LIMITATIONS if using -u
	    with ssh.  This option may also be set via the  PDSH_COMMAND_TIMEOUT
	    environment variable.

     -f number
	    Set  the  maximum  number of simultaneous remote commands to number.
	    The default is 32.

     -R name
	    Set rcmd module to name.  This  option  may  also  be  set	via  the
	    PDSH_RCMD_TYPE  environment  variable. A list of available rcmd mod-
	    ules may be obtained via the -h, -V, or  -L  options.   The  default
	    will be listed with -h or -V.

     -M name,...
	    When  multiple  misc  modules  provide the same options to pdsh, the
	    first module initialized  "wins"  and  subsequent  modules	are  not
	    loaded.  The -M option allows a list of modules to be specified that
	    will be force-initialized before all others, in-effect ensuring that
	    they  load	without  conflict (unless they conflict with eachother).
	    This option may also be set via  the  PDSH_MISC_MODULES  environment
	    variable.

     -L     List info on all loaded pdsh modules and quit.

     -N     Disable hostname: prefix on lines of output.

     -d     Include  more  complete  thread  status when SIGINT is received, and
	    display connect and command time statistics on stderr when done.

     -V     Output pdsh version information, along with list of currently loaded
	    modules, and exit.

machines module options
     -a     Target all nodes from machines file.

genders module options
     In addition to the genders options presented below, the  genders  attribute
     pdsh_rcmd_type  may  also be used in the genders database to specify an al-
     ternate rcmd connect type than the pdsh default for  hosts  with  this  at-
     tribute. For example, the following line in the genders file

       host0 pdsh_rcmd_type=ssh

     would  cause  pdsh to use ssh to connect to host0, even if rsh were the de-
     fault.   This   can   be	overridden   on   the	commandline   with   the
     "rcmd_type:host0" syntax.

     -A     Target  all  nodes	in  genders  database. The -A option will target
	    every host listed in genders -- if you want to omit  some  hosts  by
	    default, see the -a option below.

     -a     Target   all  nodes  in  genders  database	except	those  with  the
	    "pdsh_all_skip" attribute. This is shorthand for running "pdsh -A -X
	    pdsh_all_skip ..."

     -g attr[=val][,attr[=val],...]
	    Target nodes that match any  of  the  specified  genders  attributes
	    (with  optional  values).  Conflicts  with the -a option. If used in
	    combination with other node selection options like -w, the -g option
	    will select from the supplied node list, instead of from the genders
	    file as a whole. Otherwise, This option targets the alternate  host-
	    names  in the genders database by default. The -i option provided by
	    the genders module may be used to translate these to  the  canonical
	    genders  hostnames. If the installed version of genders supports it,
	    attributes supplied to -g may also take the form of genders queries.
	    Genders queries will query the genders database for the  union,  in-
	    tersection, difference, or complement of genders attributes and val-
	    ues.   The	set  operation	union is represented by two pipe symbols
	    ('||'), intersection by two ampersand symbols ('&&'), difference  by
	    two  minus	symbols ('--'), and complement by a tilde ('~').  Paren-
	    theses may be used to  change  the	order  of  operations.	See  the
	    nodeattr(1) manpage for examples of genders queries.

     -X attr[=val][,attr[=val],...]
	    Exclude  nodes  that  match  any of the specified genders attributes
	    (optionally with values).  This option may be  used  in  combination
	    with  any  other  of the node selection options (e.g. -w, -g, -a, -X
	    may also take the form of genders queries. Please see  documentation
	    for  the  genders  -g  option  for	more  information  about genders
	    queries.

     -i     Request translation between canonical and alternate hostnames.

     -F filename
	    Read genders information from filename instead of the system default
	    genders file. If filename doesn't specify an absolute path	then  it
	    is	taken to be relative to the directory specified by the PDSH_GEN-
	    DERS_DIR environment variable (/etc by default). An  alternate  gen-
	    ders  file	may also be specified via the PDSH_GENDERS_FILE environ-
	    ment variable.

nodeupdown module options
     -v     Eliminate target nodes that are considered "down" by libnodeupdown.

slurm module options
     The slurm module allows pdsh to target nodes  based  on  currently  running
     SLURM  jobs.  The slurm module is typically called after all other node se-
     lection options have been processed, and if no nodes  have  been  selected,
     the  module will attempt to read a running jobid from the SLURM_JOBID envi-
     ronment variable (which is set when running under a SLURM	allocation).  If
     SLURM_JOBID references an invalid job, it will be silently ignored.

     -j jobid[,jobid,...]
	    Target  list  of nodes allocated to the SLURM job jobid. This option
	    may be used multiple times to target multiple SLURM jobs.  The  spe-
	    cial  argument  "all"  can be used to target all nodes running SLURM
	    jobs, e.g.	-j all.

     -P partition[,partition,...]
	    Target list of nodes containing in the  SLURM  partition  partition.
	    This option may be used multiple times to target multiple SLURM par-
	    titions and/or partitions may be given in a comma-delimited list.

torque module options
     The  torque  module  allows pdsh to target nodes based on currently running
     Torque/PBS jobs. Similar to the slurm module, the torque  module  is  typi-
     cally  called  after  all other node selection options have been processed,
     and if no nodes have been selected, the module will attempt to read a  run-
     ning  jobid from the PBS_JOBID environment variable (which is set when run-
     ning under a Torque allocation).

     -j jobid[,jobid,...]
	    Target list of nodes allocated to the Torque job jobid. This  option
	    may be used multiple times to target multiple Torque jobs.

dshgroup module options
     The  dshgroup module allows pdsh to use dsh (or Dancer's shell) style group
     files from /etc/dsh/group/ or ~/.dsh/group/. The default search path may be
     overridden with the DSHGROUP_PATH environment variable,  a  colon-separated
     list  of  directories  to	search.  The  default value for DSHGROUP_PATH is
     /etc/dsh/group.

     -g groupname,...
	    Target  nodes  in  dsh  group  file  "groupname"  found  in   either
	    ~/.dsh/group/groupname or /etc/dsh/group/groupname.

     -X groupname,...
	    Exclude nodes in dsh group file "groupname."

     As an enhancement in pdsh, dshgroup files may optionally include other dsh-
     group files via a special #include STRING syntax.	The argument to #include
     may  be either a file path, or a group name, in which case the path used to
     search for the group file is the same as if the group had been specified to
     -g.

netgroup module options
     The netgroup module allows pdsh to use standard netgroup entries  to  build
     lists of target hosts. (/etc/netgroup or NIS)

     -g groupname,...
	    Target nodes in netgroup "groupname."

     -X groupname,...
	    Exclude nodes in netgroup "groupname."

ENVIRONMENT VARIABLES
     PDSH_RCMD_TYPE
	    Equivalent	to the -R option, the value of this environment variable
	    will be used to set the default rcmd module for pdsh  to  use  (e.g.
	    ssh, rsh).

     PDSH_SSH_ARGS
	    Override  the standard arguments that pdsh passes to the ssh(1) com-
	    mand ("-2 -a -x -l%u %h"). The use of the parameters %u, %h, and  %n
	    (as documented in the rcmd/exec section above) is optional. If these
	    parameters are missing, pdsh will append them to the ssh commandline
	    because it is assumed they are mandatory.

     PDSH_SSH_ARGS_APPEND
	    Append  additional	options  to  the ssh(1) command invoked by pdsh.
	    For example, PDSH_SSH_ARGS_APPEND="-q" would run ssh in quiet  mode,
	    or	"-v" would increase the verbosity of ssh. (Note: these arguments
	    are actually prepended to the ssh commandline to ensure they  appear
	    before any target hostname argument to ssh.)

     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	HOSTLIST
	    EXPRESSIONS section below).

     DSHPATH
	    If	set, the path in DSHPATH will be used as the PATH for the remote
	    processes.

     FANOUT
	    Set the pdsh fanout (See description of -f above).

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

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

     Some examples of usage follow:

     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

     A suffix on the hostname is also supported:

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

     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 exam-
     ple above should be executed as:

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

ORIGIN
     Originally a rewrite of IBM dsh(1) by  Jim  Garlick  <garlick@llnl.gov>  on
     LLNL's ASCI Blue-Pacific IBM SP system. It is now used on Linux clusters at
     LLNL.

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

     The number of nodes that pdsh 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 module. On systems
     that implement Posix threads, the limit is typically defined  by  the  con-
     stant PTHREADS_THREADS_MAX.

FILES
SEE ALSO
     rsh(1), ssh(1), dshbak(1), pdcp(1)

				   freebsd15.0				 pdsh(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pdsh&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help