收集在另一个shell脚本中运行的shell脚本的stdout日志

时间:2017-04-02 23:22:52

标签: linux bash shell scripting

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

的shell脚本中运行

shell.sh

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

此shell脚本在tables.txt

中同时在10个表上运行

现在我想收集load_data.sh所以我做的

的完整日志
xargs --max-procs 10 -n 1 sh load_data.sh < tables.txt |& tee-a logs.txt

但我得到了所有日志的混合。我想要的是日志应该是1st表日志然后2nd表日志然后是3rd表日志等等......

是否有可能实现这一目标。如果是这样我怎么能实现呢?

1 个答案:

答案 0 :(得分:1)

您可以通过为每次运行脚本创建单独的日志文件来解决您的问题。要按顺序创建日志文件,可以使用'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