为什么在 SGE 上发出 qdel 命令时 make 实用程序无法删除与未完成任务关联的文件?

Why does make utility fail to delete a file associated with an incomplete task when issuing qdel command on SGE?

我有一个 bash 脚本,它在 Sun Grid Engine HPC 上运行 make 命令:

#submitscript.sh

module load program1 program2

set -a

make

此 bash 脚本运行的 makefile 如下所示:

# makefile
SHELL := /bin/bash

all: Variants.vcf Variants1.vcf

Variants.vcf:
    program1 inputfile > Variants.vcf

Variants1.vcf:
    program2 inputfile2 > Variants1.vcf

我通过发出以下命令在 HPC 上提交脚本:

qsub submitscript.sh

当我发出 qdel 删除任务时,当前正在写入的文件没有被 make 删除。我原以为 qdel 命令会导致 makefile 退出并删除任何未完全写入的目标文件。谁能解释一下这里发生了什么?

更新

谢谢。我现在意识到我的错误。 Qdel 正在杀死整个工作,所以你们都说 make 不允许清理。当我将行添加到 makefile 时:

.DELETE_ON_ERROR: *.vcf 

然后将错误的文件路径放入 program2 行,例如

Variants1.vcf:
    program2 inputfile2 > /wrong/file/path/Variants1.vcf

已显示所需的行为,部分写入的文件在退出时被删除。

来自评论:

If you kill make how can it then do the cleanup? If you killed program1 or program2 it could have a chance. – user2672165

回复:

I realise my mistake now. Qdel is killing the entire job so as you both say make is not being allowed to clean up. – user1977981

我回答这个问题是为了让遇到同样问题的其他用户可以轻松确定所提供的答案。