Linux 收集在另一个shell脚本中运行的shell脚本的标准输出日志

Linux 收集在另一个shell脚本中运行的shell脚本的标准输出日志,linux,bash,shell,scripting,Linux,Bash,Shell,Scripting,我有一个名为load_data.sh的shell脚本,它在名为shell.sh的shell脚本中运行 xargs --max-procs 10 -n 1 sh load_data.sh < tables.txt shell.sh的内容 xargs --max-procs 10 -n 1 sh load_data.sh < tables.txt 但是我得到了所有日志的混合。我想要的是日志应该是1st表日志,然后是2nd表日志,然后是3rd表日志等等 是否有可能做到这一点。如果是这样

我有一个名为
load_data.sh
的shell脚本,它在名为
shell.sh的shell脚本中运行

xargs --max-procs 10 -n 1 sh load_data.sh < tables.txt
shell.sh的内容

xargs --max-procs 10 -n 1 sh load_data.sh < tables.txt
但是我得到了所有日志的混合。我想要的是日志应该是
1st
表日志,然后是
2nd
表日志,然后是
3rd
表日志等等


是否有可能做到这一点。如果是这样的话,我该如何实现呢?

您可以通过在每次运行脚本时创建一个单独的日志文件来解决问题。要按顺序创建日志文件,可以使用“nl”实用程序对每行输入进行编号

nl -n rz tables.txt | xargs -n 2 --max-procs 10 sh -c './load_data.sh "$1" > log-$0'
将按顺序生成日志文件

log-001
log-002
log-003 
..
要将其转换回一个文件,只需使用“cat”

cat log* > result

你不能用
load_data.sh
创建日志文件吗?我想这将解决您的问题。因为您并行运行这些进程,所以分离输出的唯一方法是为每个进程创建一个单独的日志,然后在完成时将它们连接起来。@JohnC我对shell脚本有点陌生,您能告诉我怎么做吗this@suleiman我把同样的逻辑放进去了
load_data.sh
文件,但它以之字形顺序提供了所有日志我们如何才能在末尾添加一个日期目录
>log-$0'
以便所有日志文件都转到该特定日期的目录