我有个问题。
我想从脚本中并行运行更多相同作业的实例:我有一个循环,在其中我调用带有dsjob
和不带有选项“ -wait
”和“ -jobstatus
”的作业。
我希望在脚本终止之前完成作业,但我不知道如何验证作业实例是否终止。我虽然使用等待命令,但它不合适。
提前致谢
我有个问题。
我想从脚本中并行运行更多相同作业的实例:我有一个循环,在其中我调用带有dsjob
和不带有选项“ -wait
”和“ -jobstatus
”的作业。
我希望在脚本终止之前完成作业,但我不知道如何验证作业实例是否终止。我虽然使用等待命令,但它不合适。
提前致谢
首先,您应该确保选择作业编译选项“允许多个实例”。
第二:
#!/bin/bash
. /home/dsadm/.bash_profile
INVOCATION=(1 2 3 4 5)
cd $DSHOME/bin
for id in ${INVOCATION[@]}
do
./dsjob -run -mode NORMAL -wait test demo.$id
done
项目——测试
工作——演示
$id -- 调用 id
shell scipt 中的两行:保证环境路径可以工作。
在没有 -wait 的情况下运行您所说的作业,然后循环运行 dsjob -jobinfo 并解析输出以获取作业状态 1 或 2。当所有作业都返回此状态时,它们都已完成。
但是,您可能会发现,您在作业实际开始运行之前检查了作业的状态,并且您可能会选择旧状态。您可以通过在运行作业之前先重置作业实例并等待“未运行”状态来解决此问题。
在没有等待或作业状态选项的情况下循环调用作业
循环后,通过 dsjob 命令检查作业状态
示例 - dsjob -jobinfo 项目名称 jobname.invocationid
您也可以为此编写另一个循环并在其下使用 sleep 命令
根据工作的状态写下你的进一步逻辑
但是在不同的invoaction-ids的帮助下创建作业序列来同时调用这个多实例作业是很好的
如果它们在同一进程中,则创建一个序列作业
创建不同的序列或直接创建不同的脚本以同时使用调用 ID 和调度同时触发这些作业。
最佳选择创建一个标准的通用脚本,其中将根据输入命令行参数创建每个事物或获取值
示例 - 基于 jobname + invocation-id 的日志文件
然后为不同的参数或调用安排相同的脚本。