假设您有一个简单的makefile,它包含一个模式规则,例如:
all: 1_end.fa 2_end.fa 3_end.fa
%_end.fa: %_start.fa
program $^ > $@
使用nohup运行这样的makefile时,每个进程的STDOUT都会转储到同一个nohup.out文件中。是否可以创建一个规则,将每个进程的STDOUT转储到自己的特定于文件的nohup.out文件中?
更新1:
我已经设法解决了这个问题,但我仍然愿意接受更好的建议。我的方法使用姐妹makefile来运行管道makefile,将命令行变量传递给进程并在运行时重命名nohup。如:
pipeline.GNUmakefile:
all: $(source)_end.fa
$(source)_end.fa: $(source)_start.fa
program $^ > $'
config.GNUmakefile:
sources = $(wildcard *.fa)
nohups = $(sources.fa=.out)
all: $(nohups)
%.out: %.fa
nohup make -f pipeline.GNUmakefile source=$(basename $^) > $@ &
答案 0 :(得分:0)
对于每个源,在那里创建一个临时目录cd
,从那里运行nohup
,将输出文件从那里重命名为你想要的,删除临时目录。
真的与makefile无关。