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 返回。

解决方案

首先,提交任务时不要将任务放到后台执行。

然后,根据应用报错信息,修复问题。

相关推荐
吴bug2 个月前
配置提交节点
hpc·lsf
boshushuoshuo7 个月前
LSF 主机状态 unreach 分析
eda·lsf·unreach
小信瑞1 年前
IBM Spectrum Symphony 获享高度可扩展、高吞吐量、低延迟的工作负载管理
集群·集群管理·计算资源管理·lsf·多集群·工作负载管理·资源共享优化
小信瑞1 年前
IBM Spectrum LSF Explorer 为要求苛刻的分布式和任务关键型高性能技术计算环境提供强大的工作负载管理
ibm lsf·集群管理·计算资源管理·计算资源·lsf·ibm 高性能计算·任务调度系统
小信瑞1 年前
IBM Spectrum LSF Data Manager
服务器·集群管理·计算资源管理·计算资源·lsf·data manager