shell 的多進程
阿新 • • 發佈:2019-04-24
cti 獲取 後臺 amp don sleep file 執行 shell
例子
#!/bin/bash temp_fifo_file=$$.info #以當前進程號,為臨時管道取名 mkfifo $temp_fifo_file #創建臨時管道 exec 6<>$temp_fifo_file #創建標識為6,可以對管道進行讀寫 rm $temp_fifo_file #清空管道內容 function f_sleep { sleep 2 } temp_thread=2 #進程數 for ((i=0;i<temp_thread;i++)) #為進程創建相應的占位 do echo #每個echo輸出一個回車,為每個進程創建一個占位 done >&6 #將占位信息寫入標識為6的管道 for ((i=0;i<6;i++)) do read #獲取標識為6的占位 { f_sleep echo $$,$i,`date` sleep 5 echo $$,$i,`date` echo>&6 #>>>>>當任務執行完後,會釋放管道占位,所以補充一個占位 }& #>>>>>在後臺執行{}中的任務 done <&6 #將標識為6的管道作為標準輸入 wait #等待所有任務完成 exec 6>&- #關閉標識為6的管道
例子
#!/bin/bash temp_fifo_file=$$.info #以當前進程號,為臨時管道取名 mkfifo $temp_fifo_file #創建臨時管道 exec 6<>$temp_fifo_file #創建標識為6,可以對管道進行讀寫 rm $temp_fifo_file #清空管道內容 function f_sleep { sleep 2 } temp_thread=2 #進程數 for ((i=0;i<temp_thread;i++)) #為進程創建相應的占位 do echo #每個echo輸出一個回車,為每個進程創建一個占位 done >&6 #將占位信息寫入標識為6的管道 for ((i=0;i<6;i++)) do read #獲取標識為6的占位 { f_sleep echo $$,$i,`date` }& #>>>>>在後臺執行{}中的任務 sleep 5 echo $$,$i,`date` echo >&6 #>>>>>當任務執行完後,會釋放管道占位,所以補充一個占位 done <&6 #將標識為6的管道作為標準輸入 wait #等待所有任務完成 exec 6>&- #關閉標識為6的管道
例子
#!/bin/bash temp_fifo_file=$$.info #以當前進程號,為臨時管道取名 mkfifo $temp_fifo_file #創建臨時管道 exec 6<>$temp_fifo_file #創建標識為6,可以對管道進行讀寫 rm $temp_fifo_file #清空管道內容 function f_sleep { sleep 2 echo >&6 #>>>>>當任務執行完後,會釋放管道占位,所以補充一個占位 } temp_thread=2 #進程數 for ((i=0;i<temp_thread;i++)) #為進程創建相應的占位 do echo #每個echo輸出一個回車,為每個進程創建一個占位 done >&6 #將占位信息寫入標識為6的管道 for ((i=0;i<6;i++)) do read #獲取標識為6的占位 { f_sleep echo $$,$i,`date` }& #>>>>>在後臺執行{}中的任務 sleep 5 echo $$,$i,`date` done <&6 #將標識為6的管道作為標準輸入 wait #等待所有任務完成 exec 6>&- #關閉標識為6的管道
例子
#!/bin/bash temp_fifo_file=$$.info #以當前進程號,為臨時管道取名 mkfifo $temp_fifo_file #創建臨時管道 exec 6<>$temp_fifo_file #創建標識為6,可以對管道進行讀寫 rm $temp_fifo_file #清空管道內容 function f_sleep { sleep 2 echo >&6 #>>>>>當任務執行完後,會釋放管道占位,所以補充一個占位 } temp_thread=2 #進程數 for ((i=0;i<temp_thread;i++)) #為進程創建相應的占位 do echo #每個echo輸出一個回車,為每個進程創建一個占位 done >&6 #將占位信息寫入標識為6的管道 for ((i=0;i<6;i++)) do read #獲取標識為6的占位 { f_sleep echo $$,$i,`date` sleep 5 echo $$,$i,`date` }& #>>>>>在後臺執行{}中的任務 done <&6 #將標識為6的管道作為標準輸入 wait #等待所有任務完成 exec 6>&- #關閉標識為6的管道
shell 的多進程