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

标签 linux bash shell centos

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

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

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并添加字符串 _ .

关于linux - 将并行进程 bash 脚本输出重定向到单个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63133314/

相关文章:

mysql - 如何在 ubuntu 服务器上配置共享虚拟主机?

linux - 期望脚本写入文件部分输出

linux - 更改 kube-apiserver 参数

bash - 使用awk以svn日志的模式输出

linux - 每个 channel 播放不同的声音

database - 添加新数据时发送通知的 Bash 脚本

linux - 使用 bash 遍历文件(和目录)名称

shell - 如何将 KornShell 脚本中的日期格式设置为 DD-MON-YYYY?

linux - 语法错误: unexpected end of file when sourcing a file in bash

bash - 如何将已经运行的进程置于 nohup 下?