【发布时间】:2021-09-21 15:16:01
【问题描述】:
我有一个名为 testjob.sh 的作业脚本,我将其提交为
sbatch testjob.sh
是否可以将一些输入通过管道传输到脚本?如果我作为一个简单的命令运行,我会这样做
echo 1 2 3 4 | ./testjob.sh
但是,使用 SLURM,我尝试了以下方法,但它不起作用:
echo 1 2 3 4 | sbatch testjob.sh
我的示例脚本是这样的:
#!/bin/bash
#SBATCH --export=ALL
#SBATCH --job-name=jobname
#SBATCH -e jobname.err
#SBATCH -o jobname.out
#SBATCH -p RM-shared
#SBATCH -n 1
#SBATCH --time=00:05:00
echo "jobscipt"
while read -r input
do
echo "from jobscipt $input"
done
和输出:
#this one worked
> echo 1 2 3 4 | ./testjob.sh
jobscipt
from jobscipt 1 2 3 4
#slurm did not take the input
> echo 1 2 3 4 | sbatch testjob.sh
Submitted batch job 3758713
> cat jobname.out
jobscipt
我知道可以通过使用--export 设置环境变量来将参数设置为sbatch,但是我将如何通过管道向它输入输入?管道的解决方法是临时文件,但这并不是特别优雅。
【问题讨论】: