将并行进程 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_file
date +%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
并添加字符串 _
.
我有一个要求,我需要将多个参数传递给脚本以触发每个参数的并行处理。现在我需要在单独的日志文件中捕获每个进程输出。
for arg in test_{01..05} ; do bash test.sh "$arg" & done
以上代码只能对输入参数进行并行处理。我尝试使用 exec > >(tee "/path/of/log/$arg_file
date +%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
并添加字符串 _
.