如今,計算機能力有了大幅度的提高,可是若是你有一個須要大量運算的程序,僅僅運行在一個核心上,那麼其餘的核心都會被閒置。若是想提升速度,軟件必須留意並充分利用大核心。shell
下面,我門看一下如何讓命令運行得更快。數組
咱們可使用下面的腳原本運行md5sum的多個實例。bash
#!/bin/bash #filename: checksums.sh PIDNUM=() for file in `find . -maxdepth 1 -type f` do md5sum $file & PIDNUM+=("$!") done wait ${PIDNUM[@]}
運行腳本以後,它會查找當前目錄級別全部的文件,並計算文件的md5值。code
輸出結果和下面的命令結果同樣:進程
# md5sum file1 file2 file3
可是由於多個md5sum命令是同時運行的,若是你使用的是多核處理器,就會更快的得到運行結果(可使用time命令來驗證)md5
工做原理:it
咱們利用了Bash的操做符&,它使得shell將命令放到後臺並繼續執行腳本。一旦循環結束,腳本就會退出,可是md5sum命令仍在後臺運行。爲了不這種狀況,咱們使用$!來得到進程的PID,在Bash中,$!保存着最近一個進程的PID。咱們將這些PID放到數組裏,而後使用wait命令等待這些進程結束。後臺