我正在使用bash脚本将一些数据导入MySQL数据库。我正在使用中的作业并行加载
for i in *.sql; do
{
echo "importing $i"
mysql --defaults-extra-file=my.cnf < $i
echo "$i load complete
} &
done
如果其中一个作业出错,我会在stdout中看到错误,但无法识别是哪个作业导致了错误。有没有办法将作业进程信息添加到错误输出中,从而确定是哪个作业?
您可以尝试使用GNU并行:
parallel --progress --tag 'mysql --defaults-extra-file=my.cnf < {}' ::: *.sql > import.log
这将并行运行mysql --defaults-extra-file=my.cnf
的次数与当前目录中有.sql
文件的次数一样多。您可以使用--jobs
选项来决定并行进程的最大数量。
--tag
选项在每个输出行前面加上正在处理的文件。输出被重定向到一个文件以供进一步参考,--bar
选项显示了视觉反馈的进度条。