Running a single command on every machine in the pool can be accomplished by submitting a set of HTCondor jobs using a single submit description file of the following form: {code} executable = X requirements = TARGET.name == MY.TargetSlot +TargetSlot = "slot1@machine1" queue +TargetSlot = "slot1@machine2" queue +TargetSlot = "slot1@machine3" queue . . . {endcode} There will be one +TargetSlot and one queue command for each machine in the pool. A list of machine names for all machines in the pool may be obtained using the condor_status command: {code} condor_status -constraint 'SlotID==1' -format "%s\n" Name {endcode} And, you can have HTCondor do most of the work for you in generating the above submit file: {code} > cat < runit.sub universe = vanilla executable = X requirements = TARGET.name == MY.TargetSlot EOF > condor_status -constraint 'SlotID==1' -format '+TargetSlot = "%s"\nqueue\n\n' Name >> runit.sub {endcode} -- If you are ok with different clusters for each job - {code} $ cat do_cmd.sub cmd = da_cmd requirements = TARGET.SlotId == 1 && TARGET.Machine == "$(machine)" queue $ for m in $(condor_status -master); do condor_submit -a machine=$m do_cmd.sub; done {endcode} If you want it in a single cluster - {code} #!/bin/sh cmd=$1; shift args=$@ ( echo "cmd = $cmd" echo "args = $args" echo "requirements = TARGET.SlotId == 1 && TARGET.Machine == My.TargetMachine" for machine in $(condor_status -master); do echo "+TargetMachine = \"$machine\"" echo "queue" done ) | condor_submit {endcode}