这与How to gracefully stop job execution when one step fails in Rundeck?的问题相同,只是我希望在Web UI中 kill 时优雅地停止作业。
我和另一个问题作者有类似的工作:它转储了一些SQL表;操纵一下转储;把它们上传到某处;和清理。
当清理工作被终止或杀死时,问题就出现了;它用永远不会删除的文件填充磁盘。 Rundeck为此支持error handlers,但文档说它是出错,而不是来自用户界面的手动杀戮。
我可以通过在我的脚本中使用以下内容来清除退出(成功或错误):
#!/bin/bash -ex
finish() {
echo "remove dir $OUTPUT..."
rm -Rf "$OUTPUT"
}
trap finish EXIT
# ... rest of the script ...
但是,当从UI中终止作业时,不会执行此步骤。我在Rundeck的代码源中挖掘它似乎只是使用Thread#interrupt
,我可能无法捕捉到它。
这个问题有什么解决方案吗?现在我必须ssh
进入节点并在我杀死这份工作时自行清理。