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

时间:2014-10-29 16:33:34

标签: makefile stdout nohup

假设您有一个简单的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 $^) > $@ &

1 个答案:

答案 0 :(得分:0)

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

真的与makefile无关。