我向我校的SGE批处理引擎提交作业,并正在运行一个名为COMSOL的程序,该程序的许可证数量有限,无法在给定的时间运行。当我提交一份工作时,它会排一段时间队,直到轮到我。如果使用了所有COMSOL许可证,我的工作就会立即退出,我必须重新提交它,可能要等几天才能再次尝试。我想避免那样做。我为一个程序创建了一个别名(comsollicense),该程序输出COMSOL及其不同模块的所有许可。其中有一条看起来像这样的线条:
Users of COMSOL: (Total of 7 licenses issued; Total of 7 licenses in use)输出中还有其他类似的行:
Users of WAVEOPTICS: (Total of 2 licenses issued; Total of 0 licenses in use)
Users of CHEM: (Total of 2 licenses issued; Total of 2 licenses in use)
etc....在我的SGE作业脚本中,我希望选择以“COMSOL的用户”开头的行,并将所使用的许可证数量与颁发的数量进行比较。如果它们是相同的号码,我希望它等待,稍后再检查,当有可用的许可证时,我希望我的COMSOL运行。我在想:
awk '{
comsollicense
SOME CODE HERE TO EXTRACT numIssued AND numUsed
while (numIssued == numUsed){
sleep 300
comsollicense
CODE TO EXTRACT numIssued AND numUSED
}
}'
comsol -inputfile test.mph这是否一个适当的方法?我在想,我可以在那里使用正则表达式,但我不太熟悉如何编写正则表达式。如何提取颁发的许可证数量和正在使用的数量?
发布于 2015-03-30 22:46:46
打印已颁发许可证的编号:
awk '/COMSOL/ { print $6; }' comsollicense打印正在使用的许可证数量:
awk '/COMSOL/ { print $11; }' comsollicense您可以在shell脚本中使用这个。希望这能有所帮助。
https://stackoverflow.com/questions/29357285
复制相似问题