精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用GNU Parallel提高Linux命令行執行效率

系統 Linux
GNU Parallel 是一個 shell 工具,可以并行執行任務。它可以解析多種輸入,讓你可以同時在多份數據上運行腳本或命令。你終于可以使用全部的 CPU 了!

[[232002]]

將您的計算機變成一個多任務的動力室。

你是否有過這種感覺,你的主機運行速度沒有預期的那么快?我也曾經有過這種感覺,直到我發現了 GNU Parallel。

GNU Parallel 是一個 shell 工具,可以并行執行任務。它可以解析多種輸入,讓你可以同時在多份數據上運行腳本或命令。你終于可以使用全部的 CPU 了!

如果你用過 xargs,上手 Parallel 幾乎沒有難度。如果沒有用過,這篇教程會告訴你如何使用,同時給出一些其它的用例。 

安裝 GNU Parallel

GNU Parallel 很可能沒有預裝在你的 Linux 或 BSD 主機上,你可以從軟件源中安裝。以 Fedora 為例:

  1. $ sudo dnf install parallel

對于 NetBSD:

  1. # pkg_add parallel

如果各種方式都不成功,請參考項目主頁。 

從串行到并行

正如其名稱所示,Parallel 的強大之處是以并行方式執行任務;而我們中不少人平時仍然以串行方式運行任務。

當你對多個對象執行某個命令時,你實際上創建了一個任務隊列。一部分對象可以被命令處理,剩余的對象需要等待,直到命令處理它們。這種方式是低效的。只要數據夠多,總會形成任務隊列;但與其只使用一個任務隊列,為何不使用多個更小規模的任務隊列呢?

假設你有一個圖片目錄,你希望將目錄中的圖片從 JEEG 格式轉換為 PNG 格式。有多種方法可以完成這個任務。可以手動用 GIMP 打開每個圖片,輸出成新格式,但這基本是最差的選擇,費時費力。

上述方法有一個漂亮且簡潔的變種,即基于 shell 的方案:

  1. $ convert 001.jpeg 001.png
  2. $ convert 002.jpeg 002.png
  3. $ convert 003.jpeg 003.png
  4. ... ...

對于初學者而言,這是一個不小的轉變,而且看起來是個不小的改進。不再需要圖像界面和不斷的鼠標點擊,但仍然是費力的。

進一步改進:

  1. $ for i in *jpeg; do convert $i $i.png ; done

至少,這一步設置好任務執行,讓你節省時間去做更有價值的事情。但問題來了,這仍然是串行操作;一張圖片轉換完成后,隊列中的下一張進行轉換,依此類推直到全部完成。

使用 Parallel:

  1. $ find . -name "*jpeg" | parallel -I% --max-args 1 convert % %.png

這是兩條命令的組合:find 命令,用于收集需要操作的對象;parallel 命令,用于對象排序并確保每個對象按需處理。

  • find . -name "*jpeg" 查找當前目錄下以 jpeg 結尾的所有文件。
  • parallel 調用 GNU Parallel。
  • -I% 創建了一個占位符 %,代表 find 傳遞給 Parallel 的內容。如果不使用占位符,你需要對 find 命令的每一個結果手動編寫一個命令,而這恰恰是你想要避免的。
  • --max-args 1 給出 Parallel 從隊列獲取新對象的速率限制。考慮到 Parallel 運行的命令只需要一個文件輸入,這里將速率限制設置為 1。假如你需要執行更復雜的命令,需要兩個文件輸入(例如 cat 001.txt 002.txt > new.txt),你需要將速率限制設置為 2。
  • convert % %.png 是你希望 Parallel 執行的命令。

組合命令的執行效果如下:find 命令收集所有相關的文件信息并傳遞給 parallel,后者(使用當前參數)啟動一個任務,(無需等待任務完成)立即獲取參數行中的下一個參數(LCTT 譯注:管道輸出的每一行對應 parallel 的一個參數,所有參數構成參數行);只要你的主機沒有癱瘓,Parallel 會不斷做這樣的操作。舊任務完成后,Parallel 會為分配新任務,直到所有數據都處理完成。不使用 Parallel 完成任務大約需要 10 分鐘,使用后僅需 3 至 5 分鐘。 

多個輸入

只要你熟悉 findxargs (整體被稱為 GNU 查找工具,或 findutils),find 命令是一個***的 Parallel 數據提供者。它提供了靈活的接口,大多數 Linux 用戶已經很習慣使用,即使對于初學者也很容易學習。

find 命令十分直截了當:你向 find 提供搜索路徑和待查找文件的一部分信息。可以使用通配符完成模糊搜索;在下面的例子中,星號匹配任何字符,故 find 定位(文件名)以字符 searchterm 結尾的全部文件:

  1. $ find /path/to/directory -name "*searchterm"

默認情況下,find 逐行返回搜索結果,每個結果對應 1 行:

  1. $ find ~/graphics -name "*jpg"
  2. /home/seth/graphics/001.jpg
  3. /home/seth/graphics/cat.jpg
  4. /home/seth/graphics/penguin.jpg
  5. /home/seth/graphics/IMG_0135.jpg

當使用管道將 find 的結果傳遞給 parallel 時,每一行中的文件路徑被視為 parallel 命令的一個參數。另一方面,如果你需要使用命令處理多個參數,你可以改變隊列數據傳遞給 parallel 的方式。

下面先給出一個不那么實際的例子,后續會做一些修改使其更加有意義。如果你安裝了 GNU Parallel,你可以跟著這個例子操作。

假設你有 4 個文件,按照每行一個文件的方式列出,具體如下:

  1. $ echo ada > ada ; echo lovelace > lovelace
  2. $ echo richard > richard ; echo stallman > stallman
  3. $ ls -1
  4. ada
  5. lovelace
  6. richard
  7. stallman

你需要將兩個文件合并成第三個文件,后者同時包含前兩個文件的內容。這種情況下,Parallel 需要訪問兩個文件,使用 -I% 變量的方式不符合本例的預期。

Parallel 默認情況下讀取 1 個隊列對象:

  1. $ ls -1 | parallel echo
  2. ada
  3. lovelace
  4. richard
  5. stallman

現在讓 Parallel 每個任務使用 2 個隊列對象:

  1. $ ls -1 | parallel --max-args=2 echo
  2. ada lovelace
  3. richard stallman

現在,我們看到行已經并合并;具體而言,ls -1 的兩個查詢結果會被同時傳送給 Parallel。傳送給 Parallel 的參數涉及了任務所需的 2 個文件,但目前還只是 1 個有效參數:(對于兩個任務分別為)“ada lovelace” 和 “richard stallman”。你真正需要的是每個任務對應 2 個獨立的參數。

值得慶幸的是,Parallel 本身提供了上述所需的解析功能。如果你將 --max-args 設置為 2,那么 {1}{2} 這兩個變量分別代表傳入參數的***和第二部分:

  1. $ ls -1 | parallel --max-args=2 cat {1} {2} ">" {1}_{2}.person

在上面的命令中,變量 {1} 值為 adarichard (取決于你選取的任務),變量 {2} 值為 lovelacestallman。通過使用重定向符號(放到引號中,防止被 Bash 識別,以便 Parallel 使用),(兩個)文件的內容被分別重定向至新文件 ada_lovelace.personrichard_stallman.person

  1. $ ls -1
  2. ada
  3. ada_lovelace.person
  4. lovelace
  5. richard
  6. richard_stallman.person
  7. stallman
  8.  
  9. $ cat ada_*person
  10. ada lovelace
  11. $ cat ri*person
  12. richard stallman

如果你整天處理大量幾百 MB 大小的日志文件,那么(上述)并行處理文本的方法對你幫忙很大;否則,上述例子只是個用于上手的示例。

然而,這種處理方法對于很多文本處理之外的操作也有很大幫助。下面是來自電影產業的真實案例,其中需要將一個目錄中的視頻文件和(對應的)音頻文件進行合并。

  1. $ ls -1
  2. 12_LS_establishing-manor.avi
  3. 12_wildsound.flac
  4. 14_butler-dialogue-mixed.flac
  5. 14_MS_butler.avi
  6. ...略...

使用同樣的方法,使用下面這個簡單命令即可并行地合并文件:

  1. $ ls -1 | parallel --max-args=2 ffmpeg -i {1} -i {2} -vcodec copy -acodec copy {1}.mkv 

簡單粗暴的方式

上述花哨的輸入輸出處理不一定對所有人的口味。如果你希望更直接一些,可以將一堆命令甩給 Parallel,然后去干些其它事情。

首先,需要創建一個文本文件,每行包含一個命令:

  1. $ cat jobs2run
  2. bzip2 oldstuff.tar
  3. oggenc music.flac
  4. opusenc ambiance.wav
  5. convert bigfile.tiff small.jpeg
  6. ffmepg -i foo.avi -v:b 12000k foo.mp4
  7. xsltproc --output build/tmp.fo style/dm.xsl src/tmp.xml
  8. bzip2 archive.tar

接著,將文件傳遞給 Parallel:

  1. $ parallel --jobs 6 < jobs2run

現在文件中對應的全部任務都在被 Parallel 執行。如果任務數量超過允許的數目(LCTT 譯注:應該是 --jobs 指定的數目或默認值),Parallel 會創建并維護一個隊列,直到任務全部完成。 

更多內容

GNU Parallel 是個強大而靈活的工具,還有很多很多用例無法在本文中講述。工具的 man 頁面提供很多非常酷的例子可供你參考,包括通過 SSH 遠程執行和在 Parallel 命令中使用 Bash 函數等。YouTube 上甚至有一個系列,包含大量操作演示,讓你可以直接從 GNU Parallel 團隊學習。GNU Paralle 的主要維護者還發布了官方使用指導手冊,可以從 Lulu.com 獲取。

GNU Parallel 有可能改變你完成計算的方式;即使沒有,也會至少改變你主機花在計算上的時間。馬上上手試試吧! 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2009-08-16 20:24:59

linux命令行登陸linux命令行linux命令

2014-01-22 10:21:55

Linux命令行

2010-03-05 13:00:39

Ubuntu命令

2018-08-29 20:00:11

Linux命令行命令行別名

2018-04-25 10:46:05

Linux命令行日歷

2020-04-22 09:04:27

Linux命令行搜索工具

2014-01-24 09:09:32

Linux命令行網速

2010-06-01 19:14:53

SVN命令行

2018-02-10 17:30:41

Linux命令

2016-12-15 08:30:02

Linux命令

2018-01-24 16:30:43

Linux命令Wifi

2019-08-15 15:00:31

Linux命令行PDF

2014-06-16 09:28:08

Linux命令行

2018-09-10 09:30:25

Linux命令應用

2016-11-08 17:56:37

Linux命令行密碼

2024-03-06 15:57:56

ShellLinux

2020-05-07 19:46:18

LinuxMySQLMariaDB

2020-12-11 06:44:16

命令行工具開發

2020-12-10 16:16:08

工具代碼開發

2009-08-11 09:11:06

linux打開瀏覽器命linux命令行瀏覽器linux命令行
點贊
收藏

51CTO技術棧公眾號

66视频精品| 日本婷婷久久久久久久久一区二区 | 亚洲图片在线播放| 亚洲精华一区二区三区| 欧美丝袜第一区| 免费国产一区二区| 中文在线a天堂| 日本午夜精品久久久| 狠狠躁夜夜躁人人爽超碰91| 欧美一区二区三区成人久久片| 亚洲人成电影网站| 国产精品一区二区三区不卡 | 成人免费在线观看视频| 久久久久国产精品厨房| 国产精品入口免费视| 苍井空张开腿实干12次| 国产极品在线观看| 国产一区二区不卡老阿姨| 久久夜色精品国产| 成人综合久久网| 91社区在线观看| 国产一区二区三区久久久| 久久久久久久av| 右手影院亚洲欧美| 成人欧美大片| 国产精品理伦片| 国产视频一区二区不卡| 丁香社区五月天| 久久久久久影院| 日韩欧美一区二区视频| 亚洲熟妇无码一区二区三区| av大全在线免费看| 韩国女主播成人在线观看| 97精品一区二区三区| 国产又粗又硬视频| 奇米777第四色| 国产黄色免费在线观看| 日本亚洲天堂网| 久久久久久久久久国产| 一级黄色片网址| 在这里有精品| a天堂在线资源| 免费成人动漫| www.久久爱.com| 亚洲日本韩国一区| 久久久久久久久久码影片| 在线观看国产区| 欧美日本亚洲韩国国产| 国产一区二区三区丝袜| 男人的天堂免费| 国产精品扒开腿做爽爽爽视频软件| 一级女性全黄久久生活片免费| 不卡一区二区三区四区五区| 国产美女激情视频| 亚洲黄色三级| 国产一区二区激情| 可以直接看的无码av| 一级毛片精品毛片| 欧美另类久久久品| 男人揉女人奶房视频60分| 黄色在线看片| 亚洲天堂精品在线观看| 亚州欧美一区三区三区在线| 欧美白人做受xxxx视频| aaa亚洲精品| 亚洲一区二区三区久久| 中文字幕资源网| 久久资源在线| 国产精品私人影院| 欧美日韩亚洲综合一区二区三区| 国产原创popny丨九色| 国产在线观看91| 国产精品美女一区二区在线观看| 热re99久久精品国产99热 | 亚洲va中文字幕| 国产精品无码电影在线观看| 97视频在线观看网站| 国产亚洲欧美日韩日本| 欧美男人的天堂| 无码国产色欲xxxx视频| 99久久亚洲一区二区三区青草| 国产精品永久免费观看| 国产成人亚洲欧洲在线| 国产视频一区三区| 欧美一级电影免费在线观看| 看免费黄色录像| 欧美国产专区| 久久久久久久91| 久久露脸国语精品国产91| 91av精品| 欧美乱大交xxxxx| 欧美成人乱码一二三四区免费| 一二区成人影院电影网| 欧美亚洲国产精品| 成人免费无码大片a毛片| 羞羞答答一区二区| 中文在线不卡视频| 亚洲色图综合区| 亚洲免费成人| 国产精品精品一区二区三区午夜版| 伊人网视频在线| 国产精品99久| 精品伦理一区二区三区| www.av在线播放| 一二三四社区欧美黄| 国产三区在线视频| 成人亚洲网站| 91麻豆精品国产综合久久久久久 | 快she精品国产999| 91免费人成网站在线观看18| 亚洲一区二区图片| 国产浮力第一页| 成人在线综合网| 五月天婷亚洲天综合网鲁鲁鲁| 最新真实国产在线视频| 午夜精品一区二区三区免费视频 | 91精品国产免费久久综合| 朝桐光av一区二区三区| 久久久久久久久久久妇女| 欧美性视频在线| av手机免费看| 久久综合九色综合欧美亚洲| 日韩video| 亚洲一区二区三区四区| 精品国产123| 成人18视频免费69| 日本a级不卡| 欧美人成在线视频| 91丨porny丨在线中文 | 亚洲日本在线天堂| 国产一区亚洲二区三区| 91蜜桃臀久久一区二区| 最近2019中文字幕在线高清| 九九热精品视频在线| 国产精品小仙女| 一区二区三区av| 久久91导航| 国产视频精品自拍| 国产第一页在线播放| 国产精品自拍网站| 天堂√在线观看一区二区| 欧美日韩免费看片| 国产视频在线观看一区二区| 国产成人精品亚洲男人的天堂| 久久99在线观看| 亚洲一区二区四区| 午夜激情电影在线播放| 日韩精品一区二区在线| 婷婷国产成人精品视频| 日韩精品亚洲一区二区三区免费| 久久99精品久久久久久青青日本 | 亚洲天堂avav| 国产suv一区二区三区88区| 在线视频福利一区| 自拍偷拍亚洲| 久久亚洲国产成人| 一个人看的www日本高清视频| 欧美激情一二三区| 日韩av片网站| 日韩黄色大片| 国产精品一区久久| 免费在线观看黄色| 精品婷婷伊人一区三区三| 麻豆一区在线观看| 精品亚洲成a人| 午夜欧美一区二区三区免费观看| 中文在线最新版地址| 亚洲人成在线电影| 国产精品第6页| 国产精品进线69影院| 久久国产乱子伦免费精品| 欧美猛男做受videos| 国产成人激情小视频| 欧美成人综合在线| 欧美视频在线观看一区| 日韩成人短视频| 国产91精品在线观看| 成人性免费视频| 九九综合在线| 91精品视频大全| 国产盗摄一区二区| 亚洲男人av电影| 中文字幕网址在线| 亚洲另类中文字| www插插插无码免费视频网站| 久久国产乱子伦精品| 久久久国产综合精品女国产盗摄| 久久久久久久久久网| 亚洲区小说区| 国产精品久久久久影院日本| 日本不卡视频| 亚洲第一区中文字幕| 69国产精品视频免费观看| 中文字幕欧美国产| 不许穿内裤随时挨c调教h苏绵| 伊人成年综合电影网| 欧洲一区二区在线观看| 亚洲国产一区二区久久| 韩国福利视频一区| 色吊丝在线永久观看最新版本| 欧美日韩在线一区二区| 青青草激情视频| 91麻豆6部合集magnet| 五月婷婷六月丁香激情| 欧美高清日韩| 成人精品国产免费网站| 92国产精品久久久久首页| 蜜桃麻豆影像在线观看| 日韩中文在线观看| 亚洲人妻一区二区三区| 欧美日韩国产电影| 亚洲精品1区2区3区| 国产精品污www在线观看| 伊人av在线播放| 久久婷婷一区| 真人抽搐一进一出视频| 色婷婷色综合| 麻豆av一区二区| 日韩第一区第二区| 国产精品亚洲一区二区三区| 久热在线观看视频| 欧美猛交免费看| 91xxx在线观看| 日韩精品久久久久| 亚洲国产精品欧美久久 | 日韩国产第一页| 97精品国产露脸对白| 亚洲精品第三页| 日韩国产精品久久久久久亚洲| 欧美不卡在线播放| 欧美区一区二| 日韩黄色影视| 91精品啪在线观看国产手机| 久久人91精品久久久久久不卡| 亚洲天天影视| 中文字幕欧美精品在线| 神马亚洲视频| 91色视频在线| 国产精品视频久| h片视频在线观看| 九九久久综合网站| 韩国av网站在线| 日韩中文av在线| 成年人视频在线观看免费| 日韩大片免费观看视频播放| 亚洲欧美激情在线观看| 日韩午夜小视频| 91久久精品无码一区二区| 欧美日韩国产首页| 区一区二在线观看| 欧美日韩在线一区| 中国一级免费毛片| 午夜亚洲国产au精品一区二区| 久一视频在线观看| 亚洲美女区一区| 欧美成人精品激情在线视频| 亚洲黄色小说网站| 九九久久免费视频| 夜夜嗨av一区二区三区网页| 国产免费无码一区二区视频| 亚洲男帅同性gay1069| 中文字幕在线观看成人| 亚洲一区视频在线| 久久久久久天堂| 亚洲福利一二三区| 久久久久久久国产精品毛片| 亚洲一区二区在线免费观看视频 | 亚洲婷婷国产精品电影人久久| 人人澡人人澡人人看| 99国产精品久久久久久久成人热 | 欧美三级电影在线| 精品免费国产| 国产日韩欧美一区二区三区| 亚洲aⅴ天堂av在线电影软件| 久久美女精品| 日本天堂免费a| 亚洲毛片网站| 日本成人在线免费视频| 日韩福利视频网| 欧美视频亚洲图片| 99久久er热在这里只有精品66| 日本黄色网址大全| 久久蜜桃av一区二区天堂 | 国产黄色片网站| 亚洲国产精品电影| 天堂v视频永久在线播放| 亚洲美女在线视频| 毛片在线视频| 午夜精品久久久久久久白皮肤| 欧美一区久久久| 国产三级精品网站| 亚洲三级在线| 99re在线| 久久99国内| 91国在线高清视频| 美女视频一区免费观看| 在线免费看污网站| 91亚洲永久精品| 999精品在线视频| 99这里有精品| 久久精品男人天堂| 超碰在线97国产| 国产精品高潮呻吟视频| 精品福利在线| 久久狠狠久久综合桃花| 国产精品麻豆久久| 国产美女主播在线播放| 蜜桃一区二区三区在线| 日本黄色免费观看| 亚洲婷婷国产精品电影人久久| 天堂在线免费观看视频| 日韩三级精品电影久久久| 国产youjizz在线| 久久青草福利网站| 亚洲欧美专区| 日韩av在线电影观看| 欧美一区免费| 男女视频在线看| 91女厕偷拍女厕偷拍高清| 丰满少妇被猛烈进入一区二区| 午夜精品福利在线| 一级黄色免费看| 日韩的一区二区| 欧美色图天堂| 国产精品香蕉av| 九一成人免费视频| 青青青青草视频| 国产成人精品影视| 人妻一区二区视频| 狠狠综合久久av一区二区小说| 亚洲女人18毛片水真多| 色妞欧美日韩在线| 91tv亚洲精品香蕉国产一区| 久久久久久久久久久久久9999| 牛牛国产精品| 久久久久久久久久久久91| 久久久99精品免费观看不卡| 九九精品在线观看视频| 欧美一卡二卡三卡| 免费黄色在线看| 国产美女精品视频免费观看| 国产一区二区欧美| 国产精品第七影院| 91在线视频国产| 亚洲第一天堂av| 国产乱妇乱子在线播视频播放网站| 91在线|亚洲| 香蕉视频国产精品| 99九九99九九九99九他书对| 国产精品看片你懂得 | 五月婷婷综合网| 四季av日韩精品一区| 久久久久久久久久亚洲| 中文在线综合| 欧美午夜性视频| zzijzzij亚洲日本少妇熟睡| 国产精品第108页| 欧美成人vps| 女子免费在线观看视频www| 国产精品色一区二区三区| 国产不卡的av| 亚洲日本中文字幕区| 久草热在线观看| 日韩在线视频中文字幕| 欧美少妇激情| 99热都是精品| 欧美日韩国产乱码电影| 国产免费黄色片| 亚洲天堂av图片| 日本欧美韩国| 亚洲精品在线视频观看| 免费观看成人av| 国产精品日韩一区二区| 国产大片一区| 日韩欧美中文在线视频| 亚洲精品高清在线| 色呦呦中文字幕| 日韩免费视频在线观看| 日韩国产专区| 欧洲成人午夜精品无码区久久| 亚洲国产人成综合网站| 男人搞女人网站| 91视频观看视频| 日本久久综合网| 有码中文亚洲精品| 精品精品视频| 国产精品50p| 久久aimee| 国产淫片免费看| 久久久www免费人成精品| 一区二区三区午夜| 久久久91精品国产| 久久99精品国产自在现线| 欧美伦理片在线观看| 一区二区三区四区高清精品免费观看 | 成人中文字幕合集| 波多野结衣在线观看视频| 老牛国内精品亚洲成av人片| 欧美精品二区三区四区免费看视频| 六月丁香婷婷色狠狠久久|