将并行进程bash脚本输出重定向到单个日志文件



我有一个需求,需要向脚本传递多个参数,以触发每个参数的并行处理。现在,我需要在单独的日志文件中捕获每个进程输出。

for arg in test_{01..05} ; do bash test.sh "$arg" & done

上面的代码段只能对输入参数进行并行处理。我尝试了exec > >(tee "/path/of/log/$arg_file日期+%Y%m%d%H.log") 2>&1,它能够创建一个只有日期且输出为空的日志文件名。有人能建议这里出了什么问题吗?或者除了使用parallel package之外,是否还有其他最好的方法

尝试:

data_part=$(date +%Y%m%d%H)
for arg in test_{01..05} ; do bash test.sh "$arg" > "/path/to/log/${arg}_${data_part}.log" & done

如果我使用"arg_ date+%Y%m%d%H.log";它正在创建一个只有日期而没有arg 的文件

是的,因为$arg_被解析为变量名

arg_=blabla
echo "$arg_"     # will print blabla
echo "${arg_}"   # equal to the above

要将_arg分开,使用大括号"${arg}_"将展开变量arg并添加字符串_

最新更新