Linux 利用並行進程加速命令執行

如今,計算機能力有了大幅度的提高,可是若是你有一個須要大量運算的程序,僅僅運行在一個核心上,那麼其餘的核心都會被閒置。若是想提升速度,軟件必須留意並充分利用大核心。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命令等待這些進程結束。後臺

相關文章
相關標籤/搜索