任务后台处理程序 - 在可执行文件中执行可执行文件

计算科学 软件推荐
2021-12-08 14:54:26

我目前正在使用Task Spooler,这是我在 iMac 上安装的作业调度程序。我遇到了无法正确执行作业的问题。

使用 bash 脚本,这就是我运行可以有效使用 Task Spooler 的方式:

K="opt"  # Jobname
ts -S 1 # Number of jobs to run (1 or 2)

for a in *inp
do
    ts -m -L $K bash -c "nohup ~/ORCA/orca $a > $a.out"
done

但是,我需要运行一个可执行文件,然后运行另一个包含可执行文件的文件。如果没有 Task Spooler,我可以像这样运行它(使用 bash 脚本):

a=2 # First job
b=2 # Last job

while [ $a -le $b ]
do
    ./string.exe 000$a > ./scratch/paragsm000$a &
    ((a=a+1))
done

string.exe 通过以下命令使用另一个文件(可执行):

~/ORCA/orca $ofile > $ofileout

但是,这导致我一次只能运行一项作业(需要两个内核以提高效率,但只有两个内核)并且我必须单独启动每个作业(我有大约 30 个要运行)。我一直无法使用 Task Spooler 找到正确的设置。有谁知道如何解决我的问题或我可以使用的替代软件?

1个回答

我认为你的问题有点不明确。但是,一些简单的技巧应该可以解决您的问题。

首先,您应该编写包含所需命令的 shell 脚本。使用 taskspooler 酌情调用这些脚本(或其中的命令)。如果您ts适当地嵌套调用,taskspooler 处理它们应该没有问题。

#! /bin/bash

for var in 1 2 3 4 5 .. 30
do
    ts ./executable.$var
done

如果您需要依赖项,可以使用-Dand-L标志(请参阅文档)。