+Machines:
+
+The list of machines that will be operated on can be specified in the machines
+option but is more often obtained using a Machines module. The default Machines
+module will parse a flat file that lists machine names and the characteristics
+of those machines (OS version, CPU count, owner - See Machines.pm). If a
+different mechanism is used to store and retrieve machine information then the
+use can write a replacement for the Machines module. This replacement must
+present an object oriented approach at supplying the qualifying machines by
+supporting the following methods:
+
+new: Create new Machines object
+
+find: Find machines based on a specified condition (e.g. OS = "Ubuntu 18.04")
+
+next: Return the next qualifying machine
+
+Logging and reruning:
+
+If -log is specified then a directory will be created based on the machine's
+name in -logdir (default current directory) where all output will be written to
+a log file named $machine/$machine.log. The command attempted will be written to
+$machine/command and the status will be written to $machine/status. If instead
+the we were not able to connect to the remote machine, often because the machine
+was down, then the $machine directory will only have the command file indicating
+that the command was not run on the remote machine. This allows the -restart
+parameter to work. When run with -restart, rexec will exam all log directories
+to see which ones only contain a command file and attempt to execute them on
+$machine again.
+