用于读取多个文件并运行它们的 Linux Shell 脚本

用于读取多个文件并运行它们的 Linux Shell 脚本

我正在使用 centos 集群,在其中运行 LAMMPS 软件进行模拟。现在我必须在一个文件夹中运行多个文件,现在每个文件都有类似类型的子文件,即它们包含 3 个文件 1. 输入数据文件(file.restart.3500000) 2. 脚本(in.open) 3. PBS 文件(to在子节点而不是主节点上运行代码)。

我的需要是使用单个命令运行文件夹中的所有文件,该命令过于并行而不是串行。即我希望系统同时运行所有文件,而不是第一个文件完成后启动第二个文件。

在此输入图像描述在此输入图像描述

目前,我必须转到各个文件夹并运行脚本,这非常耗时,因为我必须执行多个文件。

要运行该文件,我在文件夹中发出“ qsub runme.pbs ”命令一次。由于所有文件的内容都是相同的,所以可以对此做些什么吗?

PS:- 我只是 Linux 这个领域的初学者,所以任何帮助都会非常有用。

答案1

您可以使用一个简单的 for 循环来运行它们,如下所示:

cd /path/to/wherever
for d in D_[0-9]*/; do
  cd "$d"
  qsub runme.pbs
  cd ..
done

qsub将每个作业提交到作业队列,集群将按照调度程序允许的方式运行它们。

或者,使用pushd "$d"andpopd代替cd "$d"and cd -

qsub在后台运行每个程序可能会有一些微小的好处(使用qsub runme.pbs &),但可能不会,这更有可能使调度程序超载,同时处理太多工作并减慢速度。

相关内容