【发布时间】:2020-12-14 11:09:05
【问题描述】:
我正在使用 bash 脚本将一些数据导入 MySQL 数据库。我正在使用...中的作业并行化负载
for i in *.sql; do
{
echo "importing $i"
mysql --defaults-extra-file=my.cnf < $i
echo "$i load complete
} &
done
如果其中一个作业出错,我会在标准输出中看到该错误,但无法确定是哪个作业导致了它。有没有办法将作业过程信息添加到错误输出中,所以我是哪一个?
【问题讨论】:
-
如果您看到 importing .....sql 然后出现错误消息,您知道这是导入消息中的 sql 文件吗?
-
@AndrewPoodle :我会将作业的输出重定向到文件并将文件 ID 合并到文件名中。由于您在后台运行复合命令,因此让标准输出滑出无论如何都是个坏主意。
-
可以用sed命令
| sed -e "s/^/$i:/" -
或
2>&1 | sed -e "s/^/$i:/",将stderr添加到管道(在右大括号后添加)
标签: bash error-handling stdout jobs