【发布时间】:2019-12-31 13:14:27
【问题描述】:
在我的项目中,我编写了一个 linux shell 脚本。我想区分节点作业是否在 lsf 中运行。 LSF 是 IBM 产品。
我有一个文件Date.log,内容是这样的:
133462 bio-yuym 5*r01n42
141588 eee-leisq 40*r10n43
142885 phy-zhangy 40*r13n40
142907 phy-zhangy 40*r13n31
143545 bio-zouxd r01n07
143962 phy-xiaoxl 40*r08n38
143971 eee-leisq 40*r08n53
144009 phy-muhm 40*r11n51
我的 linux shell 脚本代码是:
cat Date.log | while read LINE
do
jobID=`echo $LINE | awk '{print $1}'`
jobInfo=`bjobs $jobID `
if [[ $jobInfo =~ "not\ found" ]]
then
echo $LINE >> "$Date"-lsffin.log
else
echo $LINE >> "$Date"-lsfrun.log
fi
done
正确的结果应该是两个文件,“$Date”-lsfrun.log的内容应该是:
143545 bio-zouxd r01n07
143962 phy-xiaoxl 40*r08n38
但很不幸,我的屏幕上有消息:
Job <143545> is not found
Job <143962> is not found
“$Date”.lsfrun.log 中为空白。所有内容都在“$Date”-lsfrun.log 中。
为什么 lsf 命令 bjobs 不能在 linux shell 中正确执行?
【问题讨论】: