如今,计算机能力有了大幅度的提高,可是若是你有一个须要大量运算的程序,仅仅运行在一个核心上,那么其余的核心都会被闲置。若是想提升速度,软件必须留意并充分利用大核心。shell
下面,我门看一下如何让命令运行得更快。数组
咱们可使用下面的脚原本运行md5sum的多个实例。
#!/bin/bash
#filename: checksums.shbash
PIDNUM=()
for file in `find . -maxdepth 1 -type f` #
do
md5sum $file &
PIDNUM+=("$!")
done
wait ${PIDNUM[@]}进程
运行脚本以后,它会查找当前目录级别全部的文件,并计算文件的md5值。md5
输出结果和下面的命令结果同样:
# md5sum file1 file2 file3it
可是由于多个md5sum命令是同时运行的,若是你使用的是多核处理器,就会更快的得到运行结果(可使用time命令来验证)后台
工做原理:原理
咱们利用了Bash的操做符&,它使得shell将命令放到后台并继续执行脚本。一旦循环结束,脚本就会退出,可是md5sum命令仍在后台运行。为了不这种状况,咱们使用$!来得到进程的PID,在Bash中,$!保存着最近一个进程的PID。咱们将这些PID放到数组里,而后使用wait命令等待这些进程结束。软件