Bash Jobs:如何输出作业流程信息以及错误



我正在使用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选项显示了视觉反馈的进度条。

最新更新