【问题标题】:balancing the bash calculations平衡 bash 计算
【发布时间】:2025-11-23 23:50:02
【问题描述】:

我们有一个用于切割适配器https://github.com/vsbuffalo/scythe/blob/master/README.md 的工具,我们希望它可以用于原始文件夹中的所有文件,并将每个文件分别输出为 OUT+文件名。

我写的这个脚本有问题,因为它没有单独处理每个文件,而且整个事情都不能正常工作。它会生成一个名为 OUT+files 的空文件

预期的操作会是这样的:

取file1,在上面使用scythe,将输出写为OUTfile1

获取文件2等

    #!/bin/bash
FILES=/home/dave/raw/*

for f in $FILES
do
  echo "Processing the $f file..."
  /home/deve/scythe/scythe -a /home/dev/scythe/illumina_adapters.fa -o "OUT"+$f $f
done

此外,我注意到(测试单个文件)该脚本仅使用了 130 个可用内核中的一个。有什么办法可以改善吗?

【问题讨论】:

  • 关于多线程,例如:for i in $(seq 1 10) ; do sleep 10 & done ; wait 更多,例如,这里:maketecheasier.com/run-bash-commands-background-linux
  • 除非你在谈论让你的 scythe 程序使用线程,否则我怀疑你想要 multiple processes,而不是 threads,因为 shell 对此一无所知线程。查看 GNU 并行。

标签: linux bash multithreading bioinformatics


【解决方案1】:

shell 中没有字符串连接运算符。改用并列;这是"OUT$f",而不是"OUT"+$f

【讨论】:

  • 好的,你会尝试多线程@chepner