将STDOUT转储到特定于文件的nohup.out文件中



假设您有一个简单的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。例如:

管道。GNUmakefile:

all: $(source)_end.fa
$(source)_end.fa: $(source)_start.fa
 program $^ > $'

配置GNUmakefile:

sources = $(wildcard *.fa)
nohups = $(sources.fa=.out)
all: $(nohups)
%.out: %.fa
 nohup make -f pipeline.GNUmakefile source=$(basename $^) > $@ &

对于每个源,在那里创建一个临时目录cd,从那里运行nohup,将输出文件重命名为您想要的任何文件,删除临时目录。

实际上与生成文件无关。

最新更新