并發(fā)執(zhí)行l(wèi)inux命令 linux控制進(jìn)程并發(fā)數(shù)量

在Linux系統(tǒng)中使用Shell實現(xiàn)多線程運行任務(wù)(多任務(wù)并發(fā)執(zhí)行) 2022-05-30

最近,有一批任務(wù)需要把兩批的fastq合并到一起并壓縮成一個fastq文件才能繼續(xù)往下做,由于存儲空間有限又不能直接全部跑上,只能按樣本逐個分批跑。眾所周知,一般fastq是成對存在的,所需要對read1和read2分別合并一次,然而這次任務(wù)的fastq文件比較大,合并然后壓縮一次需要1天左右,那對于一組fastq就要2-3天,這也太耗時間了,所以我在想能不能read1和read2 同時跑上,這就可以節(jié)省一半的時間了。

公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出天鎮(zhèn)免費做網(wǎng)站回饋大家。

平時也能遇到很多類似的任務(wù),特別是在進(jìn)程數(shù)有限的情況下,如果這些小任務(wù)單獨占用一個進(jìn)程,而任務(wù)很多就很耗時間,如果能在一個進(jìn)程下實現(xiàn)多個線程并行執(zhí)行,就能大大提高運行效率。關(guān)于進(jìn)程和線程的知識可以參考知乎的這篇文章【 Shell“ 多線程”,提高工作效率 】,整理的也比較有條理,能比較容易讀懂。

當(dāng)然,某些博主也寫過類似的文章,例如這篇【 shell后臺限制多并發(fā)控制后臺任務(wù)強度進(jìn)行文件拷貝 】但是實在是太高深莫測了,看不懂,一時半會兒也學(xué)不會。本文將示例Shell實現(xiàn)多線程的簡單版本,其實不用太復(fù)雜。

其實只需要兩個步驟, 第一步是給需要并行運行的命令行在結(jié)尾加上"",代表放到后臺運行,第二步是在在所有并行任務(wù)的后面加上一句“wait”,意思是等所有通過“”放到后臺運行的任務(wù)跑完后再繼續(xù)執(zhí)行后面的任務(wù) ,這些就能實現(xiàn)所有帶有“”的行并行執(zhí)行了。

看完腳本是不是覺得很簡單?

上面的腳本適合并行任務(wù)少的,可以手動加和wait,但是如果有幾十個甚至上百個的小任務(wù)就比較麻煩了。但不用擔(dān)心,可以寫個循環(huán),批量運行。

循環(huán)的結(jié)果也是跟上面類似的,只是多了個循環(huán)結(jié)構(gòu)。

如果需要執(zhí)行的任務(wù)只有一行,可以把大括號去掉。

關(guān)于for和while的循環(huán)可以查看之前的文章【 Shell常用循環(huán)示例(for和while批量處理)2022-05-25 】

需要注意的是多線程并行還是需要有限制的,畢竟都是在一個進(jìn)程里運行,如果線程太多了會卡頓的,建議控制在100個以內(nèi),當(dāng)然還有畢竟高級和復(fù)雜的方法可以實現(xiàn)限制。因為上面的腳本已經(jīng)夠我用了,沒繼續(xù)往下學(xué),以后可以再補充。

關(guān)于 linux 驅(qū)動中并發(fā)控制的方法有哪些

需要一定的努力才可以學(xué)好:

Linux設(shè)備驅(qū)動是linux內(nèi)核的一部分,是用來屏蔽硬件細(xì)節(jié),為上層提供標(biāo)準(zhǔn)接口的一種技術(shù)手段。為了能夠編寫出質(zhì)量比較高的驅(qū)動程序,要求工程師必須具備以下幾個方面的知識:

1、 熟悉處理器的性能

如:處理器的體系結(jié)構(gòu)、匯編語言、工作模式、異常處理等。對于初學(xué)者來說,在還不熟悉驅(qū)動編寫方法的情況下,可以先不把重心放在這一項上,因為可能因為它的枯燥、抽象而影響到你對設(shè)備驅(qū)動的興趣。隨著你不斷地熟悉驅(qū)動的編寫,你會很自然的意識到此項的重要性。

2、掌握驅(qū)動目標(biāo)的硬件工作原理及通訊協(xié)議

如:串口控制器、顯卡控制器、硬件編解碼、存儲卡控制器、I2C通訊、SPI通訊、USB通訊、SDIO通訊、I2S通訊、PCI通訊等。編寫設(shè)備驅(qū)動的前提就是需要了解設(shè)備的操作方法,所以這些內(nèi)容的重要程度不言而喻。但不是說要把所有設(shè)備的操作方法都熟悉了以后才可以寫驅(qū)動,你只需要了解你要驅(qū)動的硬件就可以了。

一、掌握硬件的控制方法

如:中斷、輪詢、DMA 等,通常一個硬件控制器會有多種控制方法,你需要根據(jù)系統(tǒng)性能的需要合理的選擇操作方法。初學(xué)階段以實現(xiàn)功能為目的,掌握的順序應(yīng)該是,輪詢-中斷-DMA。隨著學(xué)習(xí)的深入,需要綜合考慮系統(tǒng)的性能需求,采取合適的方法。

二、良好的GNU C語言編程基礎(chǔ)

如:C語言的指針、結(jié)構(gòu)體、內(nèi)存操作、鏈表、隊列、棧、C和匯編混合編程等。這些編程語法是編寫設(shè)備驅(qū)動的基礎(chǔ),無論對于初學(xué)者還是有經(jīng)驗者都非常重要。

三、 良好的linux操作系統(tǒng)概念

如:多進(jìn)程、多線程、進(jìn)程調(diào)度、進(jìn)程搶占、進(jìn)程上下文、虛擬內(nèi)存、原子操作、阻塞、睡眠、同步等概念及它們之間的關(guān)系。這些概念及方法在設(shè)備驅(qū)動里的使用是linux設(shè)備驅(qū)動區(qū)別單片機編程的最大特點,只有理解了它們才會編寫出高質(zhì)量的驅(qū)動。

四、掌握linux內(nèi)核中設(shè)備驅(qū)動的編寫接口

如:字符設(shè)備的cdev、塊設(shè)備的gendisk、網(wǎng)絡(luò)設(shè)備的net_device,以及基于這些基本接口的framebuffer設(shè)備的fb_info、mtd設(shè)備的mtd_info、tty設(shè)備的tty_driver、usb設(shè)備的usb_driver、mmc設(shè)備的mmc_host等。

linux內(nèi)核中造成并發(fā)執(zhí)行的原因是什么

linux中內(nèi)核并發(fā)機制也就是同步機制產(chǎn)生的原因,總的來說可歸納為一下4點:

l 中斷——中斷幾乎可以在任何時刻異步發(fā)生,也就可能隨時打斷當(dāng)前正在執(zhí)行的代碼。

2 睡眠及與用戶空間的同步——在內(nèi)核執(zhí)行的進(jìn)程可能會睡眠,這就會喚醒調(diào)度程序,從而導(dǎo)致調(diào)度一個新的用戶進(jìn)程執(zhí)行。

3 對稱多處理——兩個或多個處理器可以同時執(zhí)行代碼。

4內(nèi)核搶占——因為內(nèi)核具有搶占性,所以內(nèi)核中的任務(wù)可能會被另一任務(wù)搶占(在2.6內(nèi)核引進(jìn)的新能力)。

linux下并發(fā)連接數(shù)限制

并發(fā)socket連接數(shù)的多少決定于系統(tǒng)資源的多少,沒有一個常值的.在實際開發(fā)或者linux系統(tǒng)管理中也會根據(jù)需要進(jìn)行相應(yīng)的設(shè)置.

1.一般來說每一個網(wǎng)絡(luò)連接,都會建立相應(yīng)的socket句柄,同時每個連接也會有標(biāo)準(zhǔn)輸入輸出等基本的文件文件句柄,而且每一個socket連接都是進(jìn)行文件操作的,因此連接數(shù)決定于系統(tǒng)資源.

2.Linux上一般可以通過ulimit來進(jìn)行相應(yīng)的資源限制,默認(rèn)能打開的文件描述符自己可以查看.如下圖所示:

3.ulimit的命令格式:ulimit [-acdfHlmnpsStvw] [size]

參數(shù)說明:

-H 設(shè)置硬資源限制.

-S 設(shè)置軟資源限制.

-a 顯示當(dāng)前所有的資源限制.

-c size:設(shè)置core文件的最大值.單位:blocks

-d size:設(shè)置數(shù)據(jù)段的最大值.單位:kbytes

-f size:設(shè)置創(chuàng)建文件的最大值.單位:blocks

-l size:設(shè)置在內(nèi)存中鎖定進(jìn)程的最大值.單位:kbytes

-m size:設(shè)置可以使用的常駐內(nèi)存的最大值.單位:kbytes

-n size:設(shè)置內(nèi)核可以同時打開的文件描述符的最大值.單位:n

-p size:設(shè)置管道緩沖區(qū)的最大值.單位:kbytes

-s size:設(shè)置堆棧的最大值.單位:kbytes

-t size:設(shè)置CPU使用時間的最大上限.單位:seconds

-v size:設(shè)置虛擬內(nèi)存的最大值.單位:kbytes

-u 程序數(shù)目  用戶最多可開啟的程序數(shù)目

Linux如何查看服務(wù)器的并發(fā)數(shù)

linux查看連接數(shù),并發(fā)數(shù)1、查看apache當(dāng)前并發(fā)訪問數(shù):

netstat

-an

grep

ESTABLISHED

wc

-l對比httpd.conf中MaxClients的數(shù)字差距多少。2、查看有多少個進(jìn)程數(shù):ps

auxgrep

httpdwc

-l3、可以使用如下參數(shù)查看數(shù)據(jù)server-status?auto#ps

-efgrep

httpdwc

-l1388統(tǒng)計httpd進(jìn)程數(shù),連個請求會啟動一個進(jìn)程,使用于Apache服務(wù)器。表示Apache能夠處理1388個并發(fā)請求,這個值A(chǔ)pache可根據(jù)負(fù)載情況自動調(diào)整。#netstat

-natgrep

-i

80wc

-l4341netstat

-an會打印系統(tǒng)當(dāng)前網(wǎng)絡(luò)鏈接狀態(tài),而grep

-i

80是用來提取與80端口有關(guān)的連接的,wc

-l進(jìn)行連接數(shù)統(tǒng)計。

最終返回的數(shù)字就是當(dāng)前所有80端口的請求總數(shù)。#netstat

-nagrep

ESTABLISHEDwc

-l376netstat

-an會打印系統(tǒng)當(dāng)前網(wǎng)絡(luò)鏈接狀態(tài),而grep

ESTABLISHED

提取出已建立連接的信息。

然后wc

-l統(tǒng)計。最終返回的數(shù)字就是當(dāng)前所有80端口的已建立連接的總數(shù)。netstat

-natgrep

ESTABLISHEDwc

-

可查看所有建立連接的詳細(xì)記錄

查看Apache的并發(fā)請求數(shù)及其TCP連接狀態(tài):linux命令:netstat

-n

awk

'/^tcp/

{++S[$NF]}

END

{for(a

in

S)

print

a,

S[a]}'返回結(jié)果示例:LAST_ACK

5SYN_RECV

30ESTABLISHED

1597FIN_WAIT1

51FIN_WAIT2

504TIME_WAIT

1057其中的SYN_RECV表示正在等待處理的請求數(shù);ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);TIME_WAIT表示處理完畢,等待超時結(jié)束的請求數(shù)。(這個參數(shù)還不太懂,為啥是等待超時結(jié)束,請大神指教)

網(wǎng)頁標(biāo)題:并發(fā)執(zhí)行l(wèi)inux命令 linux控制進(jìn)程并發(fā)數(shù)量
網(wǎng)站鏈接:http://muchs.cn/article16/hjcigg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)頁設(shè)計公司、定制開發(fā)、企業(yè)網(wǎng)站制作、微信小程序、App設(shè)計

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司