我用来GNU make
启动 R 中不同写入/读取调用的基准测试。在某些情况下,这将导致我的 RAM 被完全使用并且进程被终止(这很好,因为我想看到限制)。
然而问题是,整个 make 进程都被终止,而不仅仅是特定的脚本调用。
例如,假设我有以下目标Makefile
,目标small.csv
工作正常,large.csv
崩溃(有点预期),但现在其他...
目标尚未构建。
Rscript tester --size large
问题是,如何以一种方式启动进程 ( ),以便在一个进程被终止后make
可以继续其他 ( ) 基准测试?...
# Makefile
.PHONY: all
all: small.csv large.csv ...
small.csv: tester.R
Rscript tester.R --size small
large.csv: tester.R
Rscript tester.R --size large
...
请注意,脚本在第一行中触及目标,因此无论运行是否被终止,目标都会被创建。
答案1
发生这种情况是因为如果任何命令指示失败,Make 默认会停止执行。
您可以通过以下方式禁用此功能在命令前面加上前缀-
:
small.csv: tester.R
-Rscript tester.R --size small
large.csv: tester.R
-Rscript tester.R --size large
或者,您可以make
使用选项-k
来告诉它在发生错误后尽可能继续运行。