停止 SLURM 作业的最正确方法

问题描述 投票:0回答:1

作为 SLURM + Snakemake 管道的一部分,我有一个脚本将数据库服务器作为 SLURM 作业启动,另一个脚本通过

scancel
停止它。

HPC 批处理系统可能不应该以这种方式使用,但目前 SLURM 节点是我必须为该数据库提供所需 RAM 和 CPU 数量的唯一资源。无论如何,相应的作业都是临时的(只要管道需要它,它就会运行,其他一切都会停止)。

我的问题是这个用例是否应该以更合适/惯用的方式进行管理。特别是,我的脚本的用户刚刚告诉我,他们在

acct
输出中看到失败的作业。这些是服务器作业,显然由于
scancel
中断而导致失败。显然,这是误报,我想避免它。

slurm hpc
1个回答
0
投票

被取消的工作不一定会在会计中显示为

FAILED
。它们将显示为
FAILED
是被
scancel
命令中断并以非零返回代码退出的进程。

您应该在数据库服务器的文档中确认这一点,但似乎在收到 SIGINT 信号后,数据库服务器认为这是错误终止并以非零代码退出。

在这种情况下,您应该使用

trap
Bash 函数捕获 SIGINT 信号,并运行正确的命令来关闭该函数中的服务器。

© www.soinside.com 2019 - 2024. All rights reserved.