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

Redirect parallel process bash script output to individual log file

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

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

以上代码只能对输入参数进行并行处理。我尝试使用 exec > >(tee "/path/of/log/$arg_filedate +%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

If i use "$arg_date +%Y%m%d%H.log" it is creating a file with just date without arg

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

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

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