• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        Linux下運(yùn)行并行命令 linux并行執(zhí)行命令

        Linux shell編程問題(并行語句)

        恩,我也試了下,說說我的看法,

        創(chuàng)新互聯(lián)建站主營天鎮(zhèn)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),天鎮(zhèn)h5微信小程序開發(fā)搭建,天鎮(zhèn)網(wǎng)站營銷推廣歡迎天鎮(zhèn)等地區(qū)企業(yè)咨詢

        3 (tableau_OS[2]=${tableau_OS[1]}) (tableau_OS[1]=${tableau_OS[2]})

        注意到兩個賦值語句都有小括號,這在shell的執(zhí)行過程中會單獨(dú)看一個子shell來運(yùn)行這兩個賦值,但需要注意這兩個賦值對父shell沒有影響,也就是說tableau_OS[1],tableau_OS[2]的值在父shell中并沒有改變,為了證明這一點(diǎn),可以寫下面這個腳本運(yùn)行

        #!/bin/sh

        a=1

        (a=2)

        echo $a

        結(jié)果輸出為1。所以3的輸出結(jié)果是對的

        4.tableau_OS[2]=${tableau_OS[1]} tableau_OS[1]=${tableau_OS[2]}如果你想表達(dá)并的意思,我覺得應(yīng)該用而不是,若用的輸出結(jié)果為

        Linux Windows Windows Linux~freeBSD

        單獨(dú)一個是把命令放入后臺執(zhí)行的意思,而非并的意思,這樣的話也能解釋你的那個輸出結(jié)果,因?yàn)橘x值被放入后臺,并不能把賦值返回父shell,所以相當(dāng)于只執(zhí)行了tableau_OS[1]=${tableau_OS[2]}

        希望對你有幫助

        怎么在red hat linux 下并行運(yùn)行多個c程序??

        fork()函數(shù),生成父子進(jìn)程

        或者在shell里調(diào)用./a 進(jìn)入后臺運(yùn)行

        如果有參數(shù),在a程序里寫system("path/b");

        就實(shí)現(xiàn)了對b程序的調(diào)用,path是b存放的路徑

        如果程序相互關(guān)聯(lián)的,編譯的時候要生成.o然后把三個程序鏈接成一個程序

        gcc -c -o a.o a.c

        gcc -c -o b.o b.c

        ld ab a.o b.o

        如果是內(nèi)核程序,還要根據(jù)依賴關(guān)系,分前后順序裝載。

        Linux Parallel 簡單用法

        parallel是一個Linux命令行并行工具(mac也可以用)

        這里只說一種簡單的用法,基本上能滿足日常工作需求,

        假設(shè)當(dāng)前目錄有三個 *.txt 文件,我們使用gzip對著三個文件進(jìn)行壓縮

        1.順序執(zhí)行語句:

        2.parallel并行版本

        3.讀取命令版本

        linux怎么用一步命令實(shí)現(xiàn)多個腳本并行執(zhí)行?

        (run1.sh?)?;?(run2.sh?)?;?(run3.sh)

        如果還有繼續(xù)加

        Linux下的并行神器——parallel

        GNU Parallel的輸入源支持文件、命令行和標(biāo)準(zhǔn)輸入(stdin或pipe)。

        當(dāng)然,若不想像上面那樣進(jìn)行組合,可使用 --xapply 參數(shù)從每一個源獲取一個參數(shù)(或文件一行),這個參數(shù)有些類似R中的函數(shù),具有廣播作用——如果其中一個輸入源的長度比較短,它的值會被重復(fù)。

        GNU Parallel可以通過 --arg-sep 和 --arg-file-sep 指定分隔符替代 ::: 或 ::::,當(dāng)這兩個符號被其它命令占用的時候會特別有用。

        GNU Parallel默認(rèn)把一行做為一個參數(shù):使用 \n 做為參數(shù)定界符??梢允褂?-d 改變:

        GNU Parallel支持通過 -E 參數(shù)指定一個值做為結(jié)束標(biāo)志:

        GNU Parallel使用 --no-run-if-empty 來跳過空行:

        如果parallel之后沒有給定命令,那么這些參數(shù)會被當(dāng)做命令:

        此外,命令還可以是一個腳本文件,一個二進(jìn)制可執(zhí)行文件或一個bash的函數(shù)(須用 export -f 導(dǎo)出函數(shù))

        GNU Parallel支持多種替換字符串,默認(rèn)使用 {},使用 -I 改變替換字符串符號 {}。其最常見的字符串替換包括以下幾種: {.} ,去掉擴(kuò)展名; {/} ,去掉路徑,只保留文件名; {//} ,只保留路徑; {/.} ,同時去掉路徑和擴(kuò)展名; {#} ,輸出任務(wù)編號。同時對于每一個字符串替換都可以自己指定符號: -I 對應(yīng) {} ; --extensionreplace 替換 {.} ; --basenamereplace 替換 {/} ; --dirnamereplace 替換 {//} ; --basenameextensionreplace 替換 {/.} ; --seqreplace 替換 {#} 。

        同時,如果有多個輸入源時,可以通過 {編號} 指定某一個輸入源的參數(shù):

        使用 --header 把每一行輸入中的第一個值做為參數(shù)名。

        使用 --colsep 把文件中的行切分為列,做為輸入?yún)?shù)。

        --xargs 會在一行中輸入盡可能多的參數(shù)(與參數(shù)字符串長度有關(guān)),通過 -s 可指定一行中參數(shù)的上限。

        為了獲得更好的并發(fā)性,GNU Parallel會在文件讀取結(jié)束后再分發(fā)參數(shù)。

        GNU Parallel 在讀取完最后一個參數(shù)之后,才開始第二個任務(wù),此時會把所有的參數(shù)平均分配到4個任務(wù)(如果指定了4個任務(wù))。

        第一個任務(wù)與上面使用 --xargs 的例子一樣,但是第二個任務(wù)會被平均的分成4個任務(wù),最終一共5個任務(wù)。(奇怪的是我的結(jié)果與官網(wǎng)教程的結(jié)果不一樣)

        替換字符串可以是輸出字符的一部分,使用 -m 參數(shù)表示每個job不重復(fù)輸出“背景”(context), -X 則與 -m 相反,會重復(fù)輸出“背景文本”,具體通過下面幾個例子進(jìn)行理解:

        使用 -N 限制每行參數(shù)的個數(shù),其中 -N0 表示一次只讀取一個參數(shù),且不輸入這個參數(shù)(作為計(jì)數(shù)器來使用)。

        如果命令行中包含特殊字符,就需要使用引號保護(hù)起來。

        perl腳本 'print "@ARGV\n"' 與linux的 echo 的功能一樣。

        使用GNU Parallel運(yùn)行這條命令的時候,perl命令需要用引號包起來,也可以使用 -q 保護(hù)perl命令:

        使用 --trim 去除參數(shù)兩頭的空格:

        使用 --tag 以參數(shù)做為輸出前綴,使用 --tagstring 修改輸出前綴:

        --dryrun 作用類似于echo:

        --verbose 則在運(yùn)行之前先打印命令:

        一般來說,GNU Parallel 會延遲輸出,直到一組命令執(zhí)行完成。使用 --ungroup ,可立刻打印輸出已完成部分。

        使用 --ungroup 會很快,但會導(dǎo)致輸出錯亂,一個任務(wù)的行輸出可能會被另一個任務(wù)的輸出截?cái)?。像上例所示,第二行輸出混合了兩個任務(wù): '4-middle' '2-start'。使用 --linebuffer 避免這個問題(稍慢一點(diǎn)):

        強(qiáng)制使輸出與參數(shù)保持順序 --keep-order/-k :

        GNU Parallel可以把每一個任務(wù)的輸出保存到文件中,臨時文件默認(rèn)保存在 /tmp 中,可以使用 --tmpdir改變(或者修改 $TMPDIR):

        輸出文件可以有結(jié)構(gòu)的保存 --results ,輸出文件不僅包含標(biāo)準(zhǔn)輸出(stdout)也會包含標(biāo)準(zhǔn)錯誤輸出(stderr):

        在使用多個變量的時候會顯示很有用:

        使用 --jobs/-j 指定并行任務(wù)數(shù)。

        通過使用 --interactive 在一個任務(wù)執(zhí)行之前讓用戶決定是否執(zhí)行。

        當(dāng)job有大量的IO操作時,為避免 “驚群效應(yīng)” ,可使用 --delay 參數(shù)指定各個job開始的時間間隔。

        若已知任務(wù)超過一定時間未反應(yīng)則為失敗則可以通過 --timeout 指定等待時間避免無謂的等待。GNU parallel能計(jì)算所有任務(wù)運(yùn)行時間的中位數(shù),因此可以指定時間為中位數(shù)的倍數(shù)關(guān)系。

        GNU parallel有多種方式可用來動態(tài)的顯示任務(wù)進(jìn)度信息,如:

        使用 --joblog 參數(shù)能夠生成各個任務(wù)的日志文件:

        通過 --resume-failed 參數(shù)可以重新運(yùn)行失敗的任務(wù); --retry-failed 的作用與 --resume-failed 類似,只是 --resume-failed 從命令行讀取失敗任務(wù),而 --retry-failed 則是從日志文件中讀取失敗任務(wù):

        GNU parallel支持在某一情況下(如第一個失敗或成功時,或者20%任務(wù)失敗時)終止任務(wù),終止任務(wù)又有兩種類型,其一為立即終止(通過 --halt now 指定),殺死所有正在運(yùn)行的任務(wù)并停止生成新的任務(wù),其二為稍后終止(通過 --halt soon 指定),停止生成新任務(wù)并等待正在運(yùn)行任務(wù)完成。

        GNU parallel還支持在任務(wù)失敗后重試運(yùn)行 --retries :

        關(guān)于終止信號的高級用法參考 官方入門文檔 。

        GNU parallel能夠在開始一個新的任務(wù)前檢查系統(tǒng)的負(fù)載情況防止過載(通過 --load 可指定負(fù)載),同時還能檢查系統(tǒng)是否使用了交換空間(swap)(通過 --noswap 限制使用swap)。

        同時,對于某些占用內(nèi)存較多的程序,parallel會檢查內(nèi)存只有內(nèi)存滿足時才啟動任務(wù)(通過 --memfree 指定需要內(nèi)存大?。?,而且在啟動任務(wù)后內(nèi)存不夠50%時會殺掉最新開始的任務(wù),直到這個任務(wù)完成再重新開始那些殺死的任務(wù)。

        還可以通過 --nice 來指定任務(wù)的優(yōu)先級。

        可使用 -S host 來進(jìn)行遠(yuǎn)程登陸:

        parallel -S username@$SERVER1 echo running on ::: username@$SERVER1

        GNU parallel 文件傳輸使用的是rsync。

        更多遠(yuǎn)程操作參見入門文檔。

        --pipe 參數(shù)使得我們可以將輸入(stdin)分為多塊(block),然后分配給多個任務(wù)多個cpu以達(dá)到負(fù)載均衡,最后的結(jié)果順序與原始順序一致。使用 --block 參數(shù)可以指定每塊的大小,默認(rèn)為1M。

        如果不關(guān)心結(jié)果順序,只想要快速的得到結(jié)果,可使用 --round-robin 參數(shù)。沒有這個參數(shù)時每塊文件都會啟動一個命令,使用這個參數(shù)后會將這些文件塊分配給job數(shù)任務(wù)(通過 --jobs 進(jìn)行指定)。若想分配更為均勻還可同時指定 --block 參數(shù)。

        參考:

        官方文檔

        GNU Parallel指南

        文章題目:Linux下運(yùn)行并行命令 linux并行執(zhí)行命令
        標(biāo)題網(wǎng)址:http://www.jbt999.com/article8/hhhhop.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、微信小程序、網(wǎng)站制作域名注冊、品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

        成都定制網(wǎng)站建設(shè)

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            黄色免费小视频在线观看 | 久久亚洲国产视频 | 亚洲精品在线中文字幕 | 国语对白乱妇激情视频 | 大鷄巴成人A片 | 波多野结衣久久久久 | 国产黄色视频在线看 | 奇米影视一区二区三区 | 波多野吉衣毛片 | 一区二区三区网站 |