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

标签 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 表日志等等...

有没有可能实现。如果可以,我该如何实现?

最佳答案

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

关于linux - 收集在另一个 shell 脚本中运行的 shell 脚本的标准输出日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174606/

相关文章:

python - 如何检查网络路径是否存在?

linux - 如何从 .o 和 .a 文件创建 .a?

c - 如何恢复标准输出的文件描述符?

linux - 如何查看 linux 中的磁盘利用率趋势(特别是 centos)

linux - 使用 awk 或 sed 的特定数据格式化

php - 安装 PHPUnit 'unknown channel "时出错 pear.phpunit.de"in "pear.phpunit.de/PHPUnit"'

bash - 如何将多行 bash EOD 命令添加到 gitlab-ci.yml?

c++ - shell 扩展:IShellExtInit::Initialize 调用了 4 次

linux - 为什么我不能在 root 模式下运行 meteor?

javascript - MongoDB shell : reading a line from the console