X

Linux 使用 parallel 來同時平行多工處理

Linux 於 Shell 不想寫程式,又想要程式可以平行處理,可以使用 parallel 來處理。

Linux 使用 parallel 來同時平行多工處理

Parallel 的程式簡介

  • parallel - build and execute command lines from standard input in parallel

parallel 安裝步驟

  • sudo apt install parallel

parallel 的功能非常多,建議先 man parallel 來查看,下面只有先列列範例參考看看:

  • seq -w 0 100 | parallel -j 8 touch {}.txt
  • seq -w 0 9999 | parallel -j 8 rm pict{}.jpg
  • find . -name '.jpg' | parallel convert -geometry 120 {} {}_thumb.jpg
  • find . -type d -name ".svn" -print | parallel rm -rf # 取代 xargs, find . -type d -name ".svn" -print | xargs rm -rf
  • cat file.txt | parallel -j 8 --pipe -L 50000 import_script
    • -j 8:並行 jobs 的數量,不想並行執行可以設為 1。若不加 -j,則預設為每個 CPU 執行一個 job
    • --pipe:從 stdin 讀取, 再將 stdin 的資料分給各個jobs
    • -L N: 一次最多讀取N行

使用 parallel 同時傳送命令到各台機器

  • echo "command" | parallel --onall --slf servers.txt
    • ex: echo "ls" | parallel --onall --slf servers.txt # servers.txt (w1.example.com, w2.example.com.. 一行一個 domain name)
  • echo "grep QueryKeyword /var/log/apache2/access.log" | parallel –onall –slf servers.txt

使用 xargs 來平行處理(感謝 CHUNG TSAI)

  • $ cat filename | xargs -P 8 touch # filename 內容是一行一行的東西,這個會 touch 出 filename 一行一行當檔名

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post