Multithreading Shell脚本多线程运行
我有用于拆分xml文件的shell脚本。但是客户环境中有一百万个xml文件。脚本运行缓慢。是否可以运行多线程模式 谢谢 我的shell脚本:Multithreading Shell脚本多线程运行,multithreading,shell,Multithreading,Shell,我有用于拆分xml文件的shell脚本。但是客户环境中有一百万个xml文件。脚本运行缓慢。是否可以运行多线程模式 谢谢 我的shell脚本: #!/bin/sh File=/home/spark/PktLog count=0 startLine=(`sed -n -e '/?xml version="1.0" encoding/=' $File`) fileEnd=`sed -n '$=' $File` endLine=(`echo ${startLine[*]} | awk -v a=$fil
#!/bin/sh
File=/home/spark/PktLog
count=0
startLine=(`sed -n -e '/?xml version="1.0" encoding/=' $File`)
fileEnd=`sed -n '$=' $File`
endLine=(`echo ${startLine[*]} | awk -v a=$fileEnd '{for(i=2;i<=NF;i++) printf("%d ",$i-1);print a}'`)
let maxIndex=${#startLine[@]}-1
for n in `seq 0 $maxIndex`
do
sed -n "${startLine[$n]},${endLine[$n]}p" $File >result_${n}.xml
done
echo $startLine[@]`enter code here`
您的方法非常慢,因为它多次读取输入文件 您应该重写脚本,使其只读取输入文件一次,而不是尝试使用多线程加快速度 以下是一个示例输入文件:
$ cat testfile
<?xml version="1.0" encoding="UTF-8"?>
<test>
<some data />
</test>
<?xml version="1.0" encoding="UTF-8"?>
<test>
<more />
<data />
</test>
<?xml version="1.0" encoding="UTF-8"?>
<test>
<more type="data" />
</test>
结果如下:
$ cat file1.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
<some data />
</test>
$ cat file2.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
<more />
<data />
</test>
$ cat file1.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
<some data />
</test>
$ cat file2.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
<more />
<data />
</test>
$ grep -c 'xml version' PktLog
3000
$ time ./yourscript
real 0m9.791s
user 0m6.849s
sys 0m2.660s
$ time ./thisscript
real 0m0.248s
user 0m0.130s
sys 0m0.107s