sbatch
多くのスペースが必要なツールを使用するサーバーでコマンドを実行しています。このコマンドは、forループ内のホームディレクトリ(tq_first)の一部のディレクトリ(一部のファイル)を使用します。ループを繰り返し、完全に実行された後にディレクトリを削除する方法があるかどうか疑問に思います。ループを中断せずに削除コマンドは機能しますか?
たとえば、このループの場合
set -eu
export PATH=/home/bin:${PATH}
reference_dir=/mnt/scratchb/REF
for fastq_dir in fastq_first/*; do
barcode=`basename ${fastq_dir}`
cmd="cellranger count \
--id=${barcode} \
--fastqs= ${fastq_dir} \
--sample=${barcode} \
--transcriptome=${reference_dir} \
--localcores=32 \
--localmem=92"
sbatch --nodes=1 \
--cpus-per-task=32 \
--mem=96G \
--time=2880 \
-o cellranger_count.%j.out \
-e cellranger_count.%j.err \
-J cellranger_count <<EOF
cmd="rm -r $fastq_dir"
#!/bin/bash
echo "Start Cell Ranger count "`date`
echo ${cmd}
eval ${cmd}
echo "Done "`date`
cellranger count --version
EOF
done
ベストアンサー1
私が正しく理解したら、あなたが望むものは次のとおりです。
cellranger
各 fastq ディレクトリに対して Slurm にジョブを送信します。- ディレクトリを削除します。
ただし、これはスクリプトが実行する操作ではありません。あなたは
cmd="cellranger count \
[. . . ]
それからあなたは:
sbatch --nodes=1 \
-J cellranger_count <<EOF
[. . . ]
cmd="rm -r $fastq_dir"
sbatch
ですから、あなたが実際にやるべきことから$cmd
義にかかわらrm -rf $fastq_dir
ずですcellrangercount...
。
とにかく、同じディレクトリで実行されないと、とにかく動作しないとrm -rf "$fastq_dir"
思うので、ループ内のフルパスを使用することをお勧めします。例えば、あなたが実際にならば、あなたは次のように変わるべきです:sbatch
for
fastq_first/
/home/echo94/data/fastq_first
for
for fastq_dir in /home/echo94/data/fastq_first/*; do
また、ディレクトリだけが必要なので、スラッシュを追加してループがファイルを選択しないようにすることもできますfor
。
for fastq_dir in /home/echo94/data/fastq_first/*/; do
各ディレクトリへのフルパスがあるため、rm $fastq_dir
システムのどこでも作業できます。これらすべてをまとめると、次のスクリプトが必要になることがあります。
for fastq_dir in /home/echo94/data/fastq_first/*/; do
barcode=`basename "$fastq_dir"`
cmd="cellranger count \
--id=${barcode} \
--fastqs= ${fastq_dir} \
--sample=${barcode} \
--transcriptome=${reference_dir} \
--localcores=32 \
--localmem=92"
sbatch --nodes=1 \
--cpus-per-task=32 \
--mem=96G \
--time=2880 \
-o cellranger_count.%j.out \
-e cellranger_count.%j.err \
-J cellranger_count <<EOF
#!/bin/bash
set -ue
echo "Start Cell Ranger count `date`"
echo "$cmd"
eval "$cmd"
echo "Done "`date`
cellranger count --version
rm -r "$fastq_dir"
EOF
done