[slurm-users] srun with &&, |, and > oh my!

Williams, Gareth (IM&T, Black Mountain) Gareth.Williams at csiro.au
Tue Jan 24 02:55:21 UTC 2023


Be brave and experiment! How far wrong can you go?

I will offer two related tips.

1) Since you want/need to use shell syntax, use srun to run a shell and pass the command as a string for that shell to interpret. Like: 
srun bash -c "cmd1 infile1 | cmd2 opt2 arg2 | cmd3 opt3 arg3 -- > outfile && cmd4 opt4 arg4"

2) put the compound command into a shell script and use srun to run the script. Like
srun bash myscript.sh
That may help you to have a more readable/maintainable command. 
The script could be static or dynamic (write it to a temporary file then use it straight away). The script could parse arguments if you like.

Happy experimenting.

Gareth

-----Original Message-----
From: slurm-users <slurm-users-bounces at lists.schedmd.com> On Behalf Of Chandler
Sent: Tuesday, 24 January 2023 1:23 PM
To: Slurm User Community List <slurm-users at lists.schedmd.com>
Subject: [slurm-users] srun with &&, |, and > oh my!

I want to run a command like: cmd1 infile1 | cmd2 opt2 arg2 | cmd3 opt3 arg3 -- > outfile && cmd4 opt4 arg4 Which runs fine at any prompt.

I'm afraid to just put `srun` at the beginning though, would it run the whole set of commands on the compute node?  I don't want to try it because it involves sending a bunch of data to stdout and then back into the other programs.  I think it might only run `cmd1 infile1` on the compute node and then the rest will try and run on the head node?



More information about the slurm-users mailing list