LSF 任务运行失败,为什么任务状态却为DONE ?

LSF 任务运行失败,为什么任务状态却为DONE ?

问题

用户反馈提交任务后,任务仅运行 1~2 秒后就退出,没有正常结束。但通过 bjobs 查看任务,却显示任务状态为 DONE 即正常退出。因此用户怀疑 LSF 有问题,不能正确报告任务状态。

排查思路

首先不通过LSF运行命令,看看是否能重现问题。

以用户帐号登录任务执行主机,进入任务执行目录,运行任务命令。

用户的命令示例如下:

ihs /job_data/xyz.tcl &

任务启动后,很快输出了错误信息(略)。

查看命令的退出码

echo $?
0

在 linux 系统命令错误通常以非零值为退出码。为什么显示为 0 ?

仔细查看用户命令,原来命令是以后台程序方式运行。如果不以后台程序运行,退出码是什么呢?

ihs /job_data/xyz.tcl 

输出(略)。查看命令的退出码,此时显示的退出码为 1 。

echo $?
1

至此,原因查明,将程序在后台运行,程序退出码不能正常返回,导致 LSF 显示的任务状态和实际状态不符。

那程序在后台运行就不能获取程序退出码,为什么呢?

查看 bash 手册,官方说明如下:

If a command is terminated by the control operator &, the shell executes the command in the background in a subshell.  The shell does not wait for the command to finish, and the return status is 0.

后台程序会在当前 shell 的子 shell 中运行,当前shell会立即以 0 返回。

解决方案

首先,提交任务时不要将任务放到后台执行。
然后,根据应用报错信息,修复问题。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值