我在一个研究小组工作,我们使用 PBS 排队系统。我不是 PBS 大师,但我想编写脚本搜索是否有作业正在运行。为此,我首先使用 qstat 调用的结果作为 qstat -f 的参数来获取所有作业的字符串,然后获取所有作业的详细列表并在其中搜索提交的文件路径。当前的kludge如下
dump=`qstat -f `qstat``
if grep -q \
"/${compounds[$i]}/D0_${j}_z_$((k*30))/scripts/jobscript_minim" \
<<<$dump; then
echo "Minimize is running!"
fi
改进建议?
另外,有人告诉我 $() 比 `. 但是当我尝试时:
dump="$(qstat -f "$(qstat)")"
...我的程序失败了。为什么是这样?我是否误解了如何使用 $() 嵌套 shell 调用?还是与我将队列作业列表从 qstat 传递到 qstat -f 的方式有关?我是否应该使用 awk 或其他东西从 qstat 命令中获取作业,然后以某种方式将它们作为 args 传递给 qstat -f?
我还应该使用递归grep吗?有些人告诉我它“更理智”,但我不确定这意味着什么。是不是更便携?它更快吗?它需要更少的治疗师旅行吗?
你应该使用它的原因是什么?