精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产亚洲视频系列| 天天做天天爱综合| 一本大道久久a久久综合婷婷 | jizz免费一区二区三区| 亚洲国产成人自拍| 成人动漫在线观看视频| 久久久久亚洲av成人毛片韩| 欧洲福利电影| 精品国产自在久精品国产| 一本大道熟女人妻中文字幕在线| 国产高清视频在线播放| 激情综合五月婷婷| 午夜精品99久久免费| 手机毛片在线观看| 日韩成人18| 色老综合老女人久久久| 亚洲成人动漫在线| 四虎成人免费在线| 国产一区二区三区观看| 日本韩国在线不卡| 久久综合激情网| 欧美日韩高清| 亚洲第一天堂av| 极品粉嫩美女露脸啪啪| 深夜福利视频一区二区| 亚洲精品欧美激情| 久久综合中文色婷婷| 国产精品人人爽| 久久久夜精品| 久久久久久久久久国产| 亚洲欧美卡通动漫| 一个色免费成人影院| 日韩一级精品视频在线观看| 又色又爽又高潮免费视频国产| 日韩欧美国产片| 欧美一级特黄高清视频| 九九视频精品全部免费播放| 精品久久国产老人久久综合| 黄色片视频在线| 亚洲一二三四| 粉嫩老牛aⅴ一区二区三区| 超碰超碰超碰超碰超碰| 日本三级在线播放完整版| 国产亚洲欧美日韩在线一区| 久久精品中文字幕一区二区三区 | 久久成人在线| 国自在线精品视频| 久久免费在线观看视频| 欧美在线视屏| 中文字幕一精品亚洲无线一区| 国产精品果冻传媒| 日本在线视频一区二区三区| 91精品国产福利| 一级黄色片国产| 亚洲精品69| 欧美精品国产精品| 亚洲黄色av片| 精品网站999| 欧美一区二区三区不卡| 亚洲综合在线一区二区| 精品肉辣文txt下载| 日韩欧美成人网| 国产av麻豆mag剧集| rebdb初裸写真在线观看| 一区二区三区久久| 久久久久久久久网| 国产福利视频在线| 亚洲欧洲精品一区二区三区| 日韩中文字幕av在线| 偷拍25位美女撒尿视频在线观看| 成人综合在线观看| 91文字幕巨乱亚洲香蕉| 国产日韩欧美中文字幕| 九色|91porny| 97精品欧美一区二区三区| 久久久国产精品成人免费| 亚洲毛片在线| 91精品国产99| 国产情侣自拍av| 国产精品综合| 欧美综合在线观看| 无码人妻精品一区二区50| 性感少妇一区| 国产精品第一页在线| 日本高清www免费视频| 狠狠干综合网| 4p变态网欧美系列| 日本高清不卡码| 石原莉奈在线亚洲二区| 国产精品一区二区三| 亚洲一级特黄毛片| 国内外成人在线视频| 97人人做人人人难人人做| 性做久久久久久久久久| 成人18精品视频| 欧美自拍资源在线| 国产原创精品视频| 亚洲成人福利片| 午夜视频在线瓜伦| 国语精品视频| 亚洲国产精品专区久久| 91精品人妻一区二区三区| 日韩88av| 欧美国产日韩在线| 在线观看免费av片| 久久国产精品99久久人人澡| 国产精品美女xx| 成人午夜电影在线观看| 亚洲精选免费视频| 成熟了的熟妇毛茸茸| yiren22亚洲综合| 日韩一区二区三免费高清| 久久免费精品国产| 欧美丝袜丝交足nylons172| 美日韩精品视频免费看| 成人免费区一区二区三区| 噜噜噜在线观看免费视频日韩| 91在线无精精品一区二区| 天天操天天干天天| 国产精品三级av在线播放| 50度灰在线观看| 日韩精品麻豆| 亚洲成人aaa| a级黄色免费视频| 一区二区三区成人精品| 成人黄色av播放免费| 亚洲精品久久久久久久久久久久久久| 91麻豆成人久久精品二区三区| 中文字幕一区综合| 欧美成人a交片免费看| 日本精品免费观看高清观看| 丰满少妇一区二区三区专区| av伊人久久| 91成人精品网站| 国产夫绿帽单男3p精品视频| 国产日韩v精品一区二区| 欧美日韩视频免费| 巨大黑人极品videos精品| 亚洲激情中文字幕| 亚洲最大的黄色网址| 丝瓜av网站精品一区二区| 国产一区二区免费在线观看| 成人av福利| 欧美午夜在线观看| 18禁裸乳无遮挡啪啪无码免费| 一区二区不卡| 国产乱人伦真实精品视频| 日韩一区免费视频| 亚洲免费观看高清完整版在线 | 少妇一级淫免费放| 自拍偷拍精品| 国模吧一区二区三区| 国产深喉视频一区二区| 国产精品乱人伦中文| 国产综合免费视频| 天天躁日日躁成人字幕aⅴ| 欧美国产在线视频| 亚洲av无码片一区二区三区 | 不卡一二三区| 精品国产髙清在线看国产毛片| 我要看黄色一级片| 激情六月婷婷久久| 伊甸园精品99久久久久久| 色豆豆成人网| 伊人久久精品视频| 国产精品无码一区| 中文字幕一区二区三区视频| 日本高清一区二区视频| 91欧美在线| 国产原创欧美精品| 色黄网站在线观看| 日韩免费在线观看| 久久久综合久久久| 99久久精品免费看国产免费软件| 久久精品在线免费视频| 2023国产精华国产精品| 久久91精品国产| 亚洲国产精品久久久久爰性色 | 久久久久久免费观看| 国产福利一区二区| 国产xxxx振车| 国产亚洲一区二区三区啪| 国产欧美日韩视频| 四虎av在线| 精品乱人伦小说| 99热国产在线观看| 国产欧美日韩卡一| 婷婷激情5月天| 国产日韩亚洲| 最新欧美日韩亚洲| 久久中文字幕导航| 日韩av不卡在线| 国产一二三在线观看| 91精品国产91综合久久蜜臀| 免费看特级毛片| 国产成人免费在线| jizzjizz国产精品喷水| 群体交乱之放荡娇妻一区二区| 韩国美女主播一区| 国产二区在线播放| 欧美tickling挠脚心丨vk| 成人午夜视频精品一区| 久久精品欧美日韩精品 | 国产成人在线观看| 国产特级黄色大片| 精品一二三区| 7777精品久久久大香线蕉小说| 成人午夜电影在线观看| 欧美一区二区免费观在线| 日韩熟女一区二区| 一区二区三区高清| 成人在线一级片| 国产成人福利片| 色七七在线观看| 亚洲大全视频| 色女孩综合网| 露出调教综合另类| 国产一区二区丝袜高跟鞋图片| 俺来俺也去www色在线观看| 亚洲最新av在线网站| 国产视频手机在线观看| 欧美伊人久久久久久久久影院 | xxww在线观看| 99成人精品| 桥本有菜av在线| 亚洲专区视频| 成人av网站观看| 欧美国产日韩电影| 91精品国产91久久久久久吃药 | 欧美高清一级片在线观看| 亚洲美女精品视频| 久久国产精品无码网站| 久久无码高潮喷水| 久久久五月天| 小说区视频区图片区| 你微笑时很美电视剧整集高清不卡 | 亚洲美女屁股眼交| www.99热| 99精品久久只有精品| 宇都宫紫苑在线播放| 日韩avvvv在线播放| 欧美在线观看视频网站| 99在线|亚洲一区二区| 欧美另类videosbestsex日本| 热久久天天拍国产| 日产中文字幕在线精品一区 | 99精品欧美一区二区三区| 狠狠久久伊人中文字幕| 欧美重口另类videos人妖| 在线观看免费网站黄| 精品久久人人做人人爽| 国产精品主播一区二区| 欧美日韩国产一区| 国产孕妇孕交大片孕| 欧美日韩国产在线播放网站| 国产男人搡女人免费视频| 欧美午夜丰满在线18影院| 精品一级少妇久久久久久久| 又紧又大又爽精品一区二区| 色欲狠狠躁天天躁无码中文字幕| aaa亚洲精品| 亚洲色偷偷色噜噜狠狠99网| 成人永久免费视频| 免费欧美一级片| 国产麻豆91精品| 亚洲欧美日本一区二区| 午夜一区在线| 久久综合伊人77777麻豆最新章节| 久久福利精品| 亚洲人成无码www久久久| 久久三级视频| 狠狠热免费视频| 免费高清不卡av| 久久久久国产免费| 99麻豆久久久国产精品免费| 朝桐光av一区二区三区| 99精品热视频| 久久精品国产亚洲AV熟女| 国产三级三级三级精品8ⅰ区| 免费黄色激情视频| 亚洲另类在线一区| 国产主播在线播放| 欧美日韩另类视频| 日批视频免费在线观看| 欧美三级电影网站| 亚洲精品97久久中文字幕| 日韩成人av网| 国产福利第一视频在线播放| www.久久色.com| 欧美性猛片xxxxx免费中国| 韩日精品中文字幕| 99综合99| 91嫩草国产在线观看| 女同另类激情重口| 日韩欧美精品在线不卡 | 日本高清不卡一区二区三| 亚洲第一论坛sis| 免费在线成人av电影| 日韩av密桃| 国产在线拍揄自揄拍无码| 亚洲第一黄网| 天天干天天综合| 老司机精品视频网站| 国内精品国产三级国产aⅴ久| 99精品视频在线播放观看| 日本乱子伦xxxx| 亚洲久草在线视频| 国产91精品看黄网站在线观看| 欧美日韩国产在线播放| 国产又粗又大又爽| 日韩成人在线观看| 看女生喷水的网站在线观看| 2019中文字幕全在线观看| 成人影院在线免费观看| 91久久国产自产拍夜夜嗨| 久久久伦理片| 宅男av一区二区三区| 国产视频一区三区| 亚洲第一色av| 在线观看av中文字幕| 日韩久久视频| 一区二区三区四区免费观看| 999国产精品永久免费视频app| 日本不卡一区二区三区四区| 国产精品分类| 国产aaa一级片| 国产精品羞羞答答xxdd| 干b视频在线观看| 亚洲国产美女搞黄色| www.久久精品视频| 精品国产一区二区三区久久影院 | 黑人另类av| 久久精品66| 涩涩涩999| 宅男噜噜噜66一区二区| 91欧美一区二区三区| 国产亚洲一区二区三区在线观看| 久久综合成人网| 日韩精品一区二| 免费网站免费进入在线| 国语自产精品视频在线看一大j8 | 一级日韩一区在线观看| 亚洲精品极品| 丰满人妻一区二区三区53视频| 欧美极品xxx| 999视频在线| 亚洲精品自拍视频| 9191在线播放| 国产综合色香蕉精品| 婷婷综合电影| 3d动漫一区二区三区| 粉嫩一区二区三区性色av| 中文乱码字幕高清一区二区| 欧美视频在线观看一区| 日av在线播放| 中国色在线观看另类| 国产美女主播在线播放| 成人午夜视频免费看| 男人操女人的视频网站| 在线播放日韩导航| 欧美日本一道| 成人福利视频网| 日韩精品诱惑一区?区三区| 污版视频在线观看| 国产精品久久久久久久久晋中| 国产精品毛片久久久久久久av| 最新91在线视频| 老牛影视精品| 日本一区不卡| 久久99久久99| 九一在线免费观看| 欧美绝品在线观看成人午夜影视| 91高清在线| 国产精品激情av电影在线观看 | 韩曰欧美视频免费观看| 污视频网站免费观看| 欧美一区第一页| 国产剧情一区| 成人日韩在线视频| 国产欧美日韩精品一区| 亚洲男人天堂网址| 日韩有码片在线观看| 欧美成人xxxx| 久久免费一级片| 国产精品自拍网站| 快灬快灬一下爽蜜桃在线观看| 欧美三级在线播放| 制服丝袜中文字幕在线| 国产一区二区高清不卡| 亚洲精品九九| 欧美做受高潮6| 555www色欧美视频| 91桃色在线观看| 国产精品一区二区三区免费| 模特精品在线| 亚洲综合欧美综合| 日韩欧美一卡二卡| 国产污视频在线播放| 水蜜桃一区二区三区| 国产成人免费视频网站|