最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell子進(jìn)程多任務(wù)實(shí)現(xiàn)進(jìn)程高并發(fā)

 更新時(shí)間:2023年07月31日 10:37:34   作者:〖羊頭〗? lsy  
本文主要介紹了shell子進(jìn)程多任務(wù)實(shí)現(xiàn)進(jìn)程高并發(fā),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

多進(jìn)程的作用

提高程序的效率:一些CPU密集型的任務(wù),如數(shù)據(jù)處理、解壓、加密等,使用多進(jìn)程可以提高程序的執(zhí)行效率,更快地完成計(jì)算任務(wù);

實(shí)現(xiàn)更復(fù)雜的功能:多進(jìn)程可以在同一時(shí)間向不同的方向處理不同的任務(wù),可以利用這一特性實(shí)現(xiàn)更加復(fù)雜的功能。

1. 了解實(shí)現(xiàn)多進(jìn)程的方法

Linux 通過后臺(tái)執(zhí)行,語(yǔ)法如下:

command &
nohup command &

兩種方式都可以實(shí)現(xiàn)后臺(tái)運(yùn)行,但也存在區(qū)別。

1. 通過命令執(zhí)行

command &:輸出的結(jié)果顯示到終端窗口,會(huì)隨著終端窗口退出而退出(不建議)

nohup command &:自動(dòng)將結(jié)果輸出到 nohup.out 文件(即使異常提示)。這種方式不論是終端退出還是ssh斷開,都不會(huì)影響后臺(tái)進(jìn)程運(yùn)行

如果后臺(tái)進(jìn)程繼續(xù)運(yùn)行,可以通過 jobs 查看

推薦幾個(gè)相關(guān)的命令

jobs  #查看后臺(tái)運(yùn)行的任務(wù)列表
bg    #將凍結(jié)的任務(wù)運(yùn)行到后臺(tái)( bg [jobs列表號(hào)] ),可以是 Ctrl + Z 停止的進(jìn)程
fg    #將后臺(tái)任務(wù)轉(zhuǎn)到前臺(tái)運(yùn)行( fg [jobs列表號(hào)] )

2. 通過 shell 執(zhí)行

兩者的區(qū)別和命令執(zhí)行差不多,如果shell中使用的 command &,但是執(zhí)行shell腳本的是 nohup src.sh & ,那么該子進(jìn)程同樣不會(huì)隨著終端的退出而停止。

不加 nohup

加入 nohup

2. shell 子進(jìn)程應(yīng)用

直接在命令后面加 & 其實(shí)意義不到,可作用的范圍小,一般用于函數(shù)的使用。

定義3個(gè)函數(shù),用 & 方法將函數(shù)變換為子進(jìn)程

proc1(){
echo "我是子進(jìn)程1..."
sleep 1000
}
proc2(){
echo "我是子進(jìn)程2..."
sleep 1000
}
proc3(){
echo "我是子進(jìn)程3..."
sleep 1000
}
proc1 &
proc2 &
proc3 &
wait
echo "======== 結(jié)束 ========"

[函數(shù)名] & :表示子進(jìn)程

wait:表示必須等待子進(jìn)程結(jié)束才能執(zhí)行下一步

使用 wait 等待子進(jìn)程,所以主進(jìn)程并不會(huì)退出。來(lái)看一下進(jìn)程信息

如果不使用 wait,程序會(huì)繼續(xù)向下執(zhí)行

proc1(){
echo "我是子進(jìn)程1..."
sleep 1000
}
proc1 &
echo "======== 當(dāng)前進(jìn)程情況 ========"
ps xl |grep $$ |grep -v grep

可以看到在沒有等待子進(jìn)程的情況會(huì)直接向下執(zhí)行,直到結(jié)束也不會(huì)停止子進(jìn)程(此時(shí)的子進(jìn)程的父進(jìn)程已停止,變成了孤兒進(jìn)程被進(jìn)程1接收) 

那么如何解決孤兒進(jìn)程呢?可以通過 trap 命令捕獲異常,子進(jìn)程隨著主進(jìn)程的退出而退出

trap "[命令1] ; [命令2] ; [命令3]..." EXIT
sleep 1000 &
cpid1="$!"
sleep 1001 &
cpid2="$!"
trap "kill -9 ${cpid1} ${cpid2} 2>/dev/null; echo '退出信號(hào)!'; exit" EXIT
echo "======== 當(dāng)前進(jìn)程情況 ========"
ps xl |grep $$ |grep -v grep

通過 $! 獲取子進(jìn)程的PID,再使用 trap 捕獲退出信號(hào)時(shí)將其殺死

3. shell 高并發(fā)

通過上述的方法了解的子進(jìn)程實(shí)現(xiàn)的原理后,高并發(fā)就非常的簡(jiǎn)單(for循環(huán))

proc1(){
for i in {1..10};do
        echo "我是子進(jìn)程1" &
done
}
proc2(){
for i in {1..10};do
        echo "我是子進(jìn)程2" &
done
}
proc1
proc2
wait

proc1(){
echo "我是子進(jìn)程1"
}
proc2(){
echo "我是子進(jìn)程2"
}
for k in {1..5};do
        proc1 &
        proc2 &
done
wait

 到此這篇關(guān)于shell子進(jìn)程多任務(wù)實(shí)現(xiàn)進(jìn)程高并發(fā)的文章就介紹到這了,更多相關(guān)shell子進(jìn)程多任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux shell腳本實(shí)現(xiàn)CPU預(yù)警

    Linux shell腳本實(shí)現(xiàn)CPU預(yù)警

    這篇文章主要介紹了Linux shell腳本實(shí)現(xiàn)CPU預(yù)警的方法,并附上代碼以及用法,有需要的小伙伴可以參考下。
    2015-03-03
  • Bash Shell中雙引號(hào)中的感嘆號(hào)問題小結(jié)

    Bash Shell中雙引號(hào)中的感嘆號(hào)問題小結(jié)

    當(dāng)你在雙引號(hào)中使用感嘆號(hào)時(shí),如果你在雙引號(hào)中直接使用感嘆號(hào),它可能會(huì)被解釋為歷史擴(kuò)展的一部分,這篇文章主要介紹了Bash Shell中雙引號(hào)中的感嘆號(hào)問題小結(jié),需要的朋友可以參考下
    2024-03-03
  • linux?文件管理命令之dirname?\?find?\?finds?\?in?\?indir詳解

    linux?文件管理命令之dirname?\?find?\?finds?\?in?\?indir詳解

    這篇文章主要介紹了linux文件管理命令之dirname\find\finds\in\indir詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • linux?shell腳本學(xué)習(xí)指南

    linux?shell腳本學(xué)習(xí)指南

    這篇文章主要介紹了linux?shell腳本學(xué)習(xí)指南的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 檢測(cè)網(wǎng)段IP使用情況的shell腳本

    檢測(cè)網(wǎng)段IP使用情況的shell腳本

    檢測(cè)網(wǎng)段IP使用情況的shell腳本,有需要的朋友可以參考下
    2013-02-02
  • Linux Shell腳本的編程之正則表達(dá)式

    Linux Shell腳本的編程之正則表達(dá)式

    這篇文章主要介紹了Linux Shell腳本的編程之正則表達(dá)式的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Linux不解壓直接查看gzip壓縮日志的常用命令

    Linux不解壓直接查看gzip壓縮日志的常用命令

    在Linux服務(wù)器上,日志文件經(jīng)常會(huì)用gzip格式進(jìn)行壓縮,以節(jié)省磁盤,對(duì)于這種壓縮文件,需要解壓?然后再用cat、grep這些命令進(jìn)行查看?其實(shí)不需要,本文就給大家介紹了Linux不解壓直接查看gzip壓縮日志的常用命令,需要的朋友可以參考下
    2024-07-07
  • Linux實(shí)時(shí)查看CUDA顯卡使用情況的常用命令詳解

    Linux實(shí)時(shí)查看CUDA顯卡使用情況的常用命令詳解

    CUDA是 NVIDIA 推出的通用并行計(jì)算平臺(tái)和編程模型,它不僅使開發(fā)者能夠利用 GPU 的龐大并行計(jì)算能力來(lái)加速各類計(jì)算密集型任務(wù),還提供了一整套軟件工具和庫(kù),本文給大家介紹了Linux實(shí)時(shí)查看CUDA顯卡使用情況的常用命令,需要的朋友可以參考下
    2025-06-06
  • Linux 中常用的sed命令

    Linux 中常用的sed命令

    sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達(dá)式使用,功能不同凡響。接下來(lái)通過本文給大家介紹Linux 中常用的sed命令,感興趣的朋友一起看看吧
    2017-09-09
  • Linux服務(wù)器硬件運(yùn)行狀態(tài)及故障郵件提醒的監(jiān)控腳本分享

    Linux服務(wù)器硬件運(yùn)行狀態(tài)及故障郵件提醒的監(jiān)控腳本分享

    這篇文章主要介紹了Linux服務(wù)器硬件運(yùn)行狀態(tài)及故障郵件提醒的監(jiān)控腳本分享,能夠測(cè)試CPU和內(nèi)存的占用狀況以及HTTP端的異常,需要的朋友可以參考下
    2016-03-03

最新評(píng)論

平江县| 青田县| 咸阳市| 三河市| 闸北区| 都匀市| 囊谦县| 德阳市| 永康市| 榆中县| 东平县| 温宿县| 汝州市| 乌海市| 颍上县| 青龙| 娄烦县| 房山区| 岗巴县| 湘潭市| 石河子市| 罗山县| 巴彦县| 襄樊市| 峨眉山市| 石狮市| 雅江县| 定襄县| 兴宁市| 龙里县| 乐至县| 昭觉县| 额尔古纳市| 庐江县| 克拉玛依市| 建始县| 汝南县| 泾源县| 江孜县| 东乡| 金阳县|