Shell 多線程操作及線程數

來源:互聯網
上載者:User

標籤:分行符號   描述符   描述   data   www.   one   htm   nbsp   大括弧   

任務需要:當我需要對一個檔案夾中的檔案,分別壓縮的時候:

原始的代碼:

 1 #!/usr/bin/shell 2 function getdir(){ 3     for element in `ls $1` 4     do 5         #echo $element 6         dir_or_file=$1$element 7  8         #echo $dir_or_file 9         if [ -d $dir_or_file ]10         then11             #echo tar cvf tar_data/$element.tar $dir_or_file12             `zip -q -r ../tar_data/$element.zip $dir_or_file`13         fi14     done15 }16 root_dir=""17 getdir $root_dir

多線程壓縮的代碼:

改成多線程實現非常簡單,只需要在do後面的大括弧加 & 符號,在done後面加一個wait,表示父進程等待子進程退出後再退出。

在linux中,在命令的末尾加上&符號,則表示該命令將在後台執行,這樣後面的命令不用等待前面的命令執行完就可以開始執行了。樣本中的迴圈體內有多條命令,則可以以{}括起來,在大括弧後面添加&符號。

 1 #!/usr/bin/shell 2 function getdir(){ 3     for element in `ls $1` 4     do 5     { 6         #echo $element 7         dir_or_file=$1$element 8  9         #echo $dir_or_file10         if [ -d $dir_or_file ]11         then12             #echo tar cvf tar_data/$element.tar $dir_or_file13             `zip -q -r ../tar_data/$element.zip $dir_or_file`14         fi15     }&16     done 17     wait18 }19 root_dir=""20 getdir $root_dir

控制多線程個數的代碼:

 

#!/usr/bin/shellTHREAD_NUM=3#定義描述符為9的管道mkfifo tmpexec 9<>tmp#預先寫入指定數量的分行符號,一個分行符號代表一個進程for ((i=0;i<$THREAD_NUM;i++))do    echo -ne "\n" 1>&9donefunction getdir(){    for element in `ls $1`    do    {        read -u 9        {            #echo $element            dir_or_file=$1$element            #echo $dir_or_file            if [ -d $dir_or_file ]            then                #echo tar cvf tar_data/$element.tar $dir_or_file                `zip -q -r ../tar_data/$element.zip $dir_or_file`            fi         }&    }    done    wait}root_dir=""getdir $root_dir

 

參考來源:

http://www.cnblogs.com/signjing/p/7074778.html

http://m.jb51.net/article/51720.htm

Shell 多線程操作及線程數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.