在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在shell中的多進(jìn)程實(shí)現(xiàn)主要是一個(gè)什么

冬至配餃子 ? 來源:基根奮斗營(yíng) ? 作者:keagen ? 2022-08-19 15:14 ? 次閱讀

主要是介紹兩個(gè)部分,

pYYBAGL_N2eABiJGAABpNOD71vU324.png

shell編程的話它主要是有這樣三個(gè)特點(diǎn), 第一個(gè)就是簡(jiǎn)單高效, 第二個(gè)是功能強(qiáng)大, 第三個(gè)是可移植好。

因?yàn)樗盐覀兊?a target="_blank">Linux的命令都放到shell編程里面,然后再通過加上循環(huán)加上判斷,然后實(shí)現(xiàn)這樣一個(gè)腳本, 這樣子的話我們就能夠去實(shí)現(xiàn)各種各樣想要的一些功能。

作為運(yùn)維人員的話,我們編寫需要腳本是我們實(shí)現(xiàn)自動(dòng)化的一個(gè)開始, 首先shell編程的話會(huì)有一個(gè)誤區(qū),

pYYBAGL_N3yADaYTAACR63dGXO4493.png

我們最開始早期接觸shell編程的話,??我們覺得我們會(huì)把那些Linux命令直接就放到腳本里面,??它這樣的話我們最開始的就會(huì)認(rèn)為shell編程 其實(shí)就是跟 Linux 命令堆在一起,??但是我們從shell編程的一個(gè)簡(jiǎn)單的角度上考慮的話,它其實(shí)是Linux命令,還有再加上一些編程語(yǔ)法,?? 比如說我們給 Linux 命令加上一個(gè)什么 if 判斷,??如果說命令執(zhí)行成功,我們才去執(zhí)行下一個(gè),或者說我們才輸出一個(gè)信息,??就是這樣的一個(gè)命令,再加上一些語(yǔ)法之后,就形成了這樣的一個(gè)shell腳本。??

下面這三個(gè)就是我們的經(jīng)驗(yàn)之談, 首先第一個(gè)就是運(yùn)維的核心,就是在正確的節(jié)點(diǎn)上面去正確的去執(zhí)行這些正確的Linux命令。??比如說我們要啟動(dòng)某一臺(tái)節(jié)點(diǎn)上的某個(gè)服務(wù),??對(duì)吧?我們要登錄到遠(yuǎn)程登錄到這個(gè)節(jié)點(diǎn)上面,然后去執(zhí)行把服務(wù)起來的一個(gè)動(dòng)作,??或者說我們要執(zhí)行把這個(gè)服務(wù)重新加載的一個(gè)動(dòng)作,??然后運(yùn)維工具的本質(zhì)是什么?就是能夠遠(yuǎn)程登錄到這臺(tái)節(jié)點(diǎn)上面去執(zhí)行 Linux 命令,??這個(gè)是很多運(yùn)維工具的一個(gè)基本功能。??

比如說我們后面用到的ansible和saltstack,它們都會(huì)有這樣的一個(gè)最基礎(chǔ)的功能,??這個(gè)也是我們作為使用者會(huì)經(jīng)常使用的功能。??

然后運(yùn)維開發(fā)是什么?就是說我們要把我們這些經(jīng)常要登錄到某臺(tái)節(jié)點(diǎn),??然后去做的某些采集數(shù)據(jù)的動(dòng)作,或者說發(fā)郵件通知,如果說有節(jié)點(diǎn)異常,我們要報(bào)警,??我們會(huì)把這些動(dòng)作,我們以前要手工操作的這些步驟,全部用寫成代碼,寫成腳本,??我們通過 Python運(yùn)行一下腳本,或者說寫成shell或者說寫成放到定時(shí)任務(wù)里面去定時(shí)執(zhí)行,??這樣的話我們就實(shí)現(xiàn)了自動(dòng)化的開發(fā)。??

我們運(yùn)維開發(fā)主要是將我們這些手動(dòng)的操作去寫成代碼,然后放到代碼,然后有代碼去幫我們執(zhí)行,??去實(shí)現(xiàn)操作的自動(dòng)化,至少我們要能夠?qū)崿F(xiàn)就節(jié)約我們這些運(yùn)維人員的時(shí)間。??

好,關(guān)于shell編程中的一些重要概念,其實(shí)跟大部分的編程語(yǔ)言是一樣的,??所以我們要看到shell編程中也有變量的,

poYBAGL_N5KACcZMAACNGR--YYM056.png

變量定義,還有字符串的一些操作,還有數(shù)組還有判斷計(jì)算,??計(jì)算的話就是簡(jiǎn)單的加減乘除,然后還有浮點(diǎn)運(yùn)算等等,還有在需要shell里面也會(huì)有函數(shù)的概念。??

此外的話shell的函數(shù)和我們其他高級(jí)語(yǔ)言的函數(shù),比如說Python或者說C,C++這些函數(shù)它是不一樣的,??它的傳參是比較特別的,我們是通過位置參數(shù)去傳。??

接下來的話我們會(huì)在shell編程的實(shí)戰(zhàn)中看到這一點(diǎn),然后參數(shù)的話它其實(shí)會(huì)分什么?函數(shù)的參數(shù)??和腳本的參數(shù)都統(tǒng)一稱之為位置參數(shù)。??

接著的話還有循環(huán),我們最核心的就是要實(shí)現(xiàn)叫多進(jìn)程的操作。??好,在shell中判斷條件,還有循環(huán)語(yǔ)句,這些都是最基本的判斷語(yǔ)句,最基本的就是if。

poYBAGL_N6WACUXzAACRN5SBZlI933.png

循環(huán)的話主要就是for while和until這三個(gè)語(yǔ)句。??

在shell中的多進(jìn)程,實(shí)現(xiàn)主要是一個(gè)什么?

pYYBAGL_N7qAc0rJAACQjwBwki8898.png

要實(shí)現(xiàn)這樣一個(gè)后臺(tái)執(zhí)行服務(wù),??我們一個(gè)操作或者說我們調(diào)用一個(gè)函數(shù),我們?cè)诓僮骱竺婕由? 的符或者說與符的時(shí)候,??這個(gè)操作或者說這個(gè)函數(shù)它里面的任務(wù)就會(huì)放到后臺(tái)去,自動(dòng)去起一個(gè)進(jìn)程去執(zhí)行,但是它會(huì)存在一個(gè)問題,??假設(shè)我有100個(gè)這樣的操作,我每一個(gè)操作都加上& ,??這樣的話后臺(tái)就會(huì)起100個(gè)進(jìn)程分別去執(zhí)行這些動(dòng)作,這樣的話我們是沒有辦法去控制進(jìn)程數(shù)的。??

如果說假設(shè)我們的任務(wù)有1萬個(gè),??我們真的能夠在一臺(tái)節(jié)點(diǎn)上面去1萬個(gè)進(jìn)程去執(zhí)行這些操作嗎???這樣子的話效率其實(shí)是會(huì)急劇下降的,因?yàn)檫M(jìn)程之間的一個(gè)開銷其實(shí)也是非常大的一個(gè)開銷,??它也會(huì)占用大量的時(shí)間,甚至?xí)?dǎo)致這個(gè)節(jié)點(diǎn)無法執(zhí)行。

我們需要去控制每次啟動(dòng)的進(jìn)程數(shù),??控制進(jìn)程數(shù)的一個(gè)核心就是通過這個(gè)叫文件描述符和管道配合執(zhí)行,??它是怎么樣執(zhí)行,我這里就畫了這樣一個(gè)圖。??

pYYBAGL_N8-AcODhAACqA9hEaIM475.png

我們首先看一下這個(gè)管道,管道的一個(gè)特點(diǎn)就是說我這邊管道里面假設(shè)有10個(gè)數(shù)據(jù),??我如果說想從管道里面讀取一個(gè)數(shù)據(jù)的時(shí)候,這個(gè)時(shí)候管道里面是不是減少了一個(gè)??,假設(shè)我這個(gè)管道里面沒有數(shù)據(jù),我讀的時(shí)候我這個(gè)操作想從管道里面去讀一個(gè)操作,??這個(gè)時(shí)候這個(gè)操作其實(shí)會(huì)阻塞在這里,它就不會(huì)返回,它就會(huì)一直阻塞到這里,直到什么時(shí)候返回,直到我從有另外一個(gè)操作像管道里面去寫入一個(gè)字符串的時(shí)候,??這邊阻塞的操作就能夠立馬收到這個(gè)字符串,然后它這個(gè)操作就會(huì)返回,??

這樣子我們?cè)趺礃訉?shí)現(xiàn)控制最大進(jìn)程數(shù),那就很簡(jiǎn)單,比如說我們管道里面有三個(gè)字符,本身有三個(gè)字符串,??3個(gè)帶換行的字符串,我們寫入管道里面3個(gè)字符串之后,假設(shè)我們有10個(gè)任務(wù),這個(gè)時(shí)候我們作為第一個(gè)任務(wù)的話,在執(zhí)行這個(gè)任務(wù)之前,我要向管道里面去讀取一個(gè)字符串,??讀了一個(gè)字符串之后,接著我就把這個(gè)任務(wù)放到后臺(tái)去執(zhí)行,就加上與這個(gè)符號(hào)&,那是不是第一個(gè)就正確執(zhí)行了???

然后讀取了第一個(gè)任務(wù)之后,這個(gè)時(shí)候管道里面是不是只有兩個(gè)字符,?? 接著再來,第二個(gè)任務(wù)的時(shí)候是不是要又向管道里面再取一個(gè)字符,第三個(gè)取,??然后等到第四個(gè)的時(shí)候,這個(gè)管道里面是不是已經(jīng)沒有字符了???

這個(gè)時(shí)候這個(gè)系統(tǒng)里面其實(shí)已經(jīng)相當(dāng)于是啟動(dòng)了三個(gè)進(jìn)程,?? 但是第四個(gè)任務(wù)在執(zhí)行的時(shí)候,它由于沒有辦法返回,??因?yàn)樗x這個(gè)管道里面的字符串它讀不到,??然后它這個(gè)任務(wù)就會(huì)阻塞在這里,后面要放到后臺(tái)去執(zhí)行的任務(wù)就沒有辦法執(zhí)行,??所以它就會(huì)一直阻塞在上面讀的操作里面。??一旦我們這個(gè)時(shí)候我們的系統(tǒng)里面是有三個(gè)進(jìn)程去執(zhí)行任務(wù),??我們?cè)谶@個(gè)任務(wù)的最后,也就是說任務(wù)執(zhí)行完了,??但是它的最后需要做一個(gè)什么操作,它需要向管道去寫入這樣一個(gè)字符串。

也就是說你的任務(wù)執(zhí)行成功了,??我最后的話要向管道里面去寫,??相當(dāng)于是把我原來消耗掉的一個(gè)任務(wù),把消耗掉的一個(gè)字符串再把它寫回到管道里面。??這個(gè)時(shí)候當(dāng)我這個(gè)任務(wù)執(zhí)行結(jié)束之后,管道這個(gè)時(shí)候又多了一個(gè)字符串,??原來阻塞在這里的任務(wù)是不是突然之間就是有字符串進(jìn)來了,我就立馬去讀取這個(gè)字符串,??接著又會(huì)有一個(gè)新的任務(wù),就會(huì)啟動(dòng)一個(gè)新的進(jìn)程去執(zhí)行一個(gè)任務(wù)。??

想象一下??,是不是一個(gè)管道里面反正有三個(gè)字符串對(duì)吧?我們依次去讀,這三個(gè)字符串讀完了之后,第四個(gè)任務(wù)進(jìn)來的時(shí)候就會(huì)阻塞在這里,??然后等到每一個(gè)任務(wù)去執(zhí)行完了之后,他就會(huì)把這個(gè)字符串重新再寫回到這管道里面,??這樣子就能夠保證這個(gè)系統(tǒng)里面最多只有三個(gè)進(jìn)程在執(zhí)行。??第四個(gè)進(jìn)程的時(shí)候是因?yàn)樗??管道里面是沒有字符串的,所以說它永遠(yuǎn)會(huì)阻塞在這里。直到一個(gè)任務(wù)結(jié)束之后,管道里面有了字符串,第四個(gè)任務(wù)才能去執(zhí)行。??

這個(gè)時(shí)候系統(tǒng)里面還是只有三個(gè),因?yàn)樯弦粋€(gè)已經(jīng)結(jié)束了對(duì)不對(duì),??這樣的一個(gè)原理,就是shell編程里面控制最大進(jìn)程數(shù)的原理,就是通過這樣一個(gè)管道實(shí)現(xiàn)的,??后面我們也會(huì)通過這個(gè)原理來去自己手動(dòng)編寫控制多進(jìn)程的一個(gè)shell腳本。??

最后的話我們還會(huì)展示兩個(gè)案例,幫助大家去理解shell編程,??它在生產(chǎn)上是怎么用的。

pYYBAGL_N-OAYzvcAACqNQfDr5c137.png

最后的話我們還會(huì)給大家演示一下關(guān)于磁盤和邏輯卷的管理。??

pYYBAGL_N_eAdhRLAABxIFJ_JO4550.png

這是為了我們后面在做一些Python代碼的時(shí)候,我們要做一些操作,我們要建一個(gè)邏輯卷,建一個(gè)卷了之后,比如說我們??有一個(gè)的 1 g的目錄, 我們想給它建1 g 的空間,有一個(gè)1 g的空間之后,然后我想把磁盤把它寫滿,??就是說為了方便我們后續(xù)去做一些操作,然后做這些操作的時(shí)候,我們要能夠理解磁盤,??一個(gè)20g的磁盤是怎么樣把20g的磁盤能夠切成一個(gè)1 g的小磁盤,然后一個(gè)小邏輯卷,??然后把小邏輯卷然后拿來使用,這是Linux運(yùn)維里面的一些基礎(chǔ)知識(shí)。??

最后的話我們會(huì)來搭建一下兩個(gè)Linux的一個(gè)基礎(chǔ)服務(wù),??

pYYBAGL_OAuASE1uAABTXUyHEKg024.png

在搭建這個(gè)服務(wù)過程中我們通過的比如說我們這個(gè)FTP服務(wù)我們會(huì)自己動(dòng)手去實(shí)現(xiàn)一個(gè)shell腳本,??那就是實(shí)現(xiàn)一鍵部署 FTP服務(wù)的一個(gè)腳本。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    593

    瀏覽量

    27403
  • FTP
    FTP
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

    40640
  • shell編程
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    5878
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    跪求LabVIEW多進(jìn)程問題,謝謝各位

    進(jìn)行處理。但是這樣就不是多線程并行了,相當(dāng)于幾個(gè)站點(diǎn)是順序執(zhí)行的,就像讀取數(shù)據(jù)時(shí)候就是先讀第一個(gè)站點(diǎn)的數(shù)據(jù)放進(jìn)第一個(gè)隊(duì)列,再讀第二個(gè)站點(diǎn)的數(shù)據(jù)放進(jìn)第二個(gè)隊(duì)列......這樣,我想這樣點(diǎn)
    發(fā)表于 04-04 16:34

    實(shí)驗(yàn):編寫多進(jìn)程程序

    1.實(shí)驗(yàn)?zāi)康?通過編寫多進(jìn)程程序,使讀者熟練掌握fork()、exec()、wait()和waitpid()等函數(shù)的使用,進(jìn)步理解Linux
    發(fā)表于 09-05 15:32

    Linux Shell多進(jìn)程并發(fā)以及并發(fā)數(shù)控制

    Linux Shell多進(jìn)程并發(fā)以及并發(fā)數(shù)控制1. 基礎(chǔ)知識(shí)準(zhǔn)備1.1. linux后臺(tái)進(jìn)程Unix是個(gè)多任務(wù)系統(tǒng),允許多用戶同時(shí)運(yùn)行多個(gè)
    發(fā)表于 08-28 15:53

    labview有多進(jìn)程嗎?

    labview有多進(jìn)程嗎?
    發(fā)表于 02-03 17:13

    多線程和多進(jìn)程的區(qū)別

    6.你的數(shù)據(jù)庫(kù)會(huì)又500個(gè)連接數(shù),會(huì)有10個(gè),你分析下情況7.udp和tcp的區(qū)別8.多線程和多進(jìn)
    發(fā)表于 07-19 07:21

    淺談多進(jìn)程多線程的選擇

    魚還是熊掌:淺談多進(jìn)程多線程的選擇關(guān)于多進(jìn)程和多線程,教科書上最經(jīng)典的句話是“進(jìn)程是資源分配的最小單位,線程是CPU調(diào)度的最小單位”,這句話應(yīng)付考試基本上夠了,但如果在工作
    發(fā)表于 08-24 07:38

    LINUX系統(tǒng)下多線程與多進(jìn)程性能分析

    采用多進(jìn)程處理多個(gè)任務(wù),會(huì)占用很多系統(tǒng)資源(主要是CPU 和內(nèi)存的使用)。LINUX ,則對(duì)這種弊端進(jìn)行了改進(jìn),在用戶態(tài)實(shí)現(xiàn)了多線程處理
    發(fā)表于 08-13 08:31 ?20次下載

    Zynq SoC上實(shí)現(xiàn)雙核非對(duì)稱的多進(jìn)程處理模式

    我的上篇博客我介紹了利用Zynq SoC上的兩個(gè)ARM Cortex-A9 MPCore處理器執(zhí)行不同的任務(wù)程序,實(shí)現(xiàn)非對(duì)稱的
    發(fā)表于 02-11 10:08 ?2381次閱讀
    <b class='flag-5'>在</b>Zynq SoC上<b class='flag-5'>實(shí)現(xiàn)</b>雙核非對(duì)稱的<b class='flag-5'>多進(jìn)程</b>處理模式

    進(jìn)程控制開發(fā)之編寫多進(jìn)程程序?qū)嶒?yàn)解析

    7.4.1 編寫多進(jìn)程程序 1.實(shí)驗(yàn)?zāi)康?通過編寫多進(jìn)程程序,使讀者熟練掌握fork()、exec()、wait()和waitpid()等函數(shù)的使用,進(jìn)步理解Linux
    發(fā)表于 10-18 16:33 ?0次下載
    <b class='flag-5'>進(jìn)程</b>控制開發(fā)之編寫<b class='flag-5'>多進(jìn)程</b>程序?qū)嶒?yàn)解析

    使用Python多進(jìn)程的理由

    Python 是運(yùn)行在解釋器的語(yǔ)言,查找資料知道, python 中有個(gè)全局鎖( GI),使用多進(jìn)程( Threa)的情況下,不能發(fā)揮
    的頭像 發(fā)表于 04-04 16:50 ?1604次閱讀
    使用Python<b class='flag-5'>多進(jìn)程</b>的理由

    Python多進(jìn)程學(xué)習(xí)

    ) 技術(shù)不同,因?yàn)槎嗑€程的并發(fā)任務(wù)依賴于個(gè) GIL (Global Interpreter Lock)。多進(jìn)程,每個(gè)
    的頭像 發(fā)表于 04-26 11:04 ?553次閱讀

    淺談Linux網(wǎng)絡(luò)編程多進(jìn)程和多線程

    Linux網(wǎng)絡(luò)編程,我們應(yīng)該見過很多網(wǎng)絡(luò)框架或者server,有多進(jìn)程的處理方式,也有多線程處理方式,孰好孰壞并沒有可比性,首先選擇多進(jìn)程還是多線程我們需要考慮業(yè)務(wù)場(chǎng)景,其次結(jié)合當(dāng)
    發(fā)表于 08-08 16:56 ?827次閱讀
    淺談Linux網(wǎng)絡(luò)編程<b class='flag-5'>中</b>的<b class='flag-5'>多進(jìn)程</b>和多線程

    shell腳本實(shí)現(xiàn)并發(fā)多進(jìn)程

    Shell腳本實(shí)現(xiàn)并發(fā)多進(jìn)程可以使用以下方法: 使用符號(hào)來將其放入后臺(tái)執(zhí)行,從而實(shí)現(xiàn)并發(fā)
    的頭像 發(fā)表于 11-08 10:20 ?1327次閱讀

    你還是分不清多進(jìn)程和多線程嗎?文搞懂!

    你還是分不清多進(jìn)程和多線程嗎?文搞懂! 多進(jìn)程和多線程是并發(fā)編程中常見的兩個(gè)概念,它們都可以用于提高程序的性能和效率。但是它們的實(shí)現(xiàn)方式和
    的頭像 發(fā)表于 12-19 16:07 ?568次閱讀

    Python多線程和多進(jìn)程的區(qū)別

    Python作為種高級(jí)編程語(yǔ)言,提供了多種并發(fā)編程的方式,其中多線程與多進(jìn)程是最常見的兩種方式之本文中,我們將探討Python多線
    的頭像 發(fā)表于 10-23 11:48 ?404次閱讀
    Python<b class='flag-5'>中</b>多線程和<b class='flag-5'>多進(jìn)程</b>的區(qū)別
    主站蜘蛛池模板: 成 人 色综合| 三级黄色片在线播放| 亚洲欧洲一二三区| 国产操女| 国产在线精品一区免费香蕉| 国产亚洲精品久久久久久久软件| 美女黄色毛片| vip免费观看| 又粗又大的机巴好爽欧美| 国产精品久久久久天天影视| 51午夜| 一区二区三区在线看| 国产成人系列| 四虎最新在线| 欧美福利视频网| 成人性视频网站| 视频一本大道香蕉久在线播放| 久久久久久国产精品免费免费 | 色多多在线看| 免费黄色国产视频| www.色.con| 成年毛片| 天天看天天爽| 天天摸天天躁天天添天天爽| 久久精品美女久久| 亚洲一区在线视频观看| 亚洲最大的黄色网址| 欧美一区二区三区免费高| 国产色爽免费视频| 天堂资源地址在线| 欧美乱妇高清无乱码| 中国国产aa一级毛片| 国产精品11页| 色妞视频资源在线观看| 黄色三级视频网站| 天天操天天干视频| 女同在线视频| 4455四色永久免费| 四虎在线精品| 丁香婷婷网| 大黄网站在线观看|