版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Linux程序設(shè)計環(huán)境CH06Linux內(nèi)核之進(jìn)程和文件共享內(nèi)容回顧-1Shell腳本編程入門注釋的含義test命令幾個經(jīng)典范例參數(shù)$#,$@,$0,$1… 內(nèi)容回顧-2判斷、循環(huán)、函數(shù)if-thencase-esacwhilefor函數(shù)function本章內(nèi)容Linux內(nèi)核中進(jìn)程的基本概念進(jìn)程管理作業(yè)管理Linux內(nèi)核中的文件機(jī)制硬鏈接和符號鏈接進(jìn)程的基本概念Onatimesharing(分時)systemwithonlyoneCPU: Multipleprocessesareexecutedsimultaneously(并發(fā))byquicklyswitchingtheCPUfromoneprocesstoanotherTheshortCPUtime,thatisgiventoaprocessiscalledaquantum時間片(100msec)ThetechniqueusedbythekerneltochoosethenextprocessthatgetstheCPUiscalledCPUscheduling(cpu調(diào)度)CPUschedulingisimplementedinthekernel(內(nèi)核)進(jìn)程的基本概念CPUschedulingonatimesharingsystem:Apriorityvalue(優(yōu)先數(shù))isassignedtoeveryprocessTheprocesswiththehighestprioritytakestheCPUnextThesimplestschedulingalgorithmiscalledfirst-come-first-served(FCFS)AnotheralgorithmassignshighestprioritytotheI/OBoundprocesses(ProcessesthatspendmostoftheirtimedoingI/O.Ex:vieditor)RoundRobin(RR)AprocessgetstousetheCPUforonequantumandthentheCPUisgiventoanotherprocess,thenextprocessinthequeueofprocesseswaitingtousetheCPULinuxusesacombinationofthesealgorithms進(jìn)程的基本概念
LINUX進(jìn)程可以處于多種狀態(tài)中的一種。進(jìn)程可以從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài),直到執(zhí)行結(jié)束(正常或者非正常終止)并退出系統(tǒng)。當(dāng)進(jìn)程完成它的工作并正常退出系統(tǒng),進(jìn)程就是正常終止。當(dāng)進(jìn)程是因為在異常(錯誤)條件下退出系統(tǒng)或者在其擁有者或特權(quán)用戶的干涉下退出系統(tǒng),它便是非正常終止。Linux2.4進(jìn)程有5種狀態(tài);Linux2.6進(jìn)程有7種狀態(tài)。Linux進(jìn)程狀態(tài)Linux進(jìn)程狀態(tài)
TASK_RUNNING:進(jìn)程在運行(是系統(tǒng)的當(dāng)前進(jìn)程)或者準(zhǔn)備運行(等待被安排到系統(tǒng)的一個CPU上)。進(jìn)程控制塊有一個run_list成員,所有處于TASK_RUNNING狀態(tài)的進(jìn)程都通過該成員鏈在一起,稱之為可運行隊列。
TASK_INTERRUPTIBLE:進(jìn)程處于某個等待隊列中,它能夠被信號(signal)或中斷喚醒。等待資源的請求滿足時,也被喚醒。
TASK_UNINTERRUPTIBLE:進(jìn)程處于某個等待隊列中,不能被信號或中斷喚醒,只有等待的資源被滿足時才被喚醒。例如當(dāng)進(jìn)程打開一個設(shè)備文件時,使用TASK_UNINTERRUPTIBLE
TASK_ZOMBIE:進(jìn)程已經(jīng)停止,但還沒有釋放進(jìn)程控制塊
TASK_STOPPED:可能是被特定的信號終止,也可能是受其它進(jìn)程的跟蹤調(diào)用而暫時將CPU交給跟蹤它的進(jìn)程。TASK_TRACED(2.6)TASK_DEAD(2.6)Shell命令的執(zhí)行和進(jìn)程
Shell命令可以是內(nèi)部或者外部命令。
內(nèi)部(內(nèi)置)命令(internal(built-in)command)的代碼本身就是shell進(jìn)程的一部分。LINUXshell中的一些內(nèi)部命令如.(點命令)、alias、bg、cd、continue、echo、exec、exit、fg、jobs、pwd、set、shift、test、time、umask、unset和wait。外部命令是(externalcommand)命令代碼以文件的形式出現(xiàn)的稱為;文件內(nèi)容可以是二進(jìn)制代碼或者shell腳本。通常使用的一些外部命令如grep、more、cat、mkdir、rmdir、ls、sort、ftp、telnet、lp和ps。
LINUX進(jìn)程通過系統(tǒng)調(diào)用fork創(chuàng)建另外一個進(jìn)程,該操作建立原進(jìn)程內(nèi)存的完全拷貝。這兩個進(jìn)程接著fork后的語句執(zhí)行。Theforkingprocessisknownastheparentprocess(父進(jìn)程)
Thecreated(forked)processiscalledthe
childprocess(子進(jìn)程)Shell命令的執(zhí)行和進(jìn)程bashshell創(chuàng)建一個進(jìn)程Shell命令的執(zhí)行和進(jìn)程為了執(zhí)行一個外部二進(jìn)制命令,需要一種機(jī)制使子進(jìn)程成為要執(zhí)行的命令
LINUX系統(tǒng)調(diào)用exec完成這項工作,進(jìn)程可以用另外一個命令的可執(zhí)行代碼來覆蓋自身。
shell先后使用fork和exec系統(tǒng)調(diào)用來執(zhí)行一個外部二進(jìn)制命令。Shell命令的執(zhí)行和進(jìn)程Shell命令的執(zhí)行和進(jìn)程shell腳本的執(zhí)行同二進(jìn)制文件的執(zhí)行略有不同。
Shell腳本的執(zhí)行:
當(dāng)前shell創(chuàng)建一個子shell并讓子shell依次執(zhí)行shell腳本中的命令,腳本中每一個命令的執(zhí)行與從鍵盤輸入的命令采用相同的方式子shell為每一個要執(zhí)行的命令創(chuàng)建一個子進(jìn)程。子shell執(zhí)行腳本文件中的命令時,父shell等待子shell結(jié)束。當(dāng)子shell遇到腳本文件的結(jié)束標(biāo)志,它就終止。子shell的唯一目的是執(zhí)行命令,eof意味著沒有其它的命令了。當(dāng)子shell終止,父shell結(jié)束等待狀態(tài),開始重新執(zhí)行。Shell命令的執(zhí)行和進(jìn)程Linux進(jìn)程屬性進(jìn)程包含以下屬性:OwnersIDProcessnameProcessID(PID)ProcessstateParentprocessIDLenghtoftimetheprocesshasbeenrunning進(jìn)程已執(zhí)行的時間Linux進(jìn)程屬性ps命令用來查看系統(tǒng)中運行的進(jìn)程的各種屬性Linux進(jìn)程屬性使用范例Linux進(jìn)程屬性進(jìn)程管理
top命令:實時監(jiān)視CPU的活動狀態(tài)。該命令顯示系統(tǒng)中CPU密集型任務(wù)的狀態(tài)并且允許你交互地控制這些進(jìn)程。該命令按照CPU使用情況、內(nèi)存使用情況和執(zhí)行時間對進(jìn)程進(jìn)行排序。top命令執(zhí)行時,可以用各種命令與之交互。當(dāng)使用交互命令時,top提示你一個或者多個與它要完成的工作有關(guān)的問題。
kill命令:終止指定PID的進(jìn)程。進(jìn)程管理使用范例作業(yè)管理當(dāng)鍵入命令并敲<Enter>后,shell執(zhí)行命令在當(dāng)前命令執(zhí)行結(jié)束即shell返回前,你不能執(zhí)行任何命令。這種執(zhí)行命令的方式,稱之為在前臺foreground執(zhí)行需要運行一個要花費很長時間才能完成的LINUX命令(或者任一這樣的程序),當(dāng)命令執(zhí)行時,你無法做其它工作。
LINUX可以在執(zhí)行命令的同時做其他工作。這種能力稱為在后臺background執(zhí)行命令。
作業(yè)管理在命令后面加上一個“與”操作符號(&),使該命令在后臺操作。當(dāng)一個任務(wù)在后臺運行時:前端shell命令行繼續(xù)工作
可以繼續(xù)執(zhí)行其他shell命令作業(yè)管理允許用戶執(zhí)行一個命令而不需要等待前一個命令的完成。作業(yè)管理Example:$find/-namefoo–print>foo.paths2>/dev/null& [1]23467括號中shell返回的數(shù)字是該進(jìn)程的作業(yè)號(jobnumber);另外一個數(shù)字是進(jìn)程PID。
find命令的作業(yè)號是1,其PID為23467。
作業(yè)是一個不運行于前臺的進(jìn)程,并且只能在關(guān)聯(lián)的終端上訪問。這樣的進(jìn)程通常在后臺執(zhí)行或者成為被掛起的進(jìn)程。作業(yè)管理fg命令可以使后臺進(jìn)程轉(zhuǎn)到前臺作業(yè)管理使用<Ctrl-Z>掛起一個前臺進(jìn)程。使用bg命令把被掛起的進(jìn)程轉(zhuǎn)到后臺。使用jobs命令顯示所有掛起的(停止的)和后臺進(jìn)程的作業(yè)號,確定哪一個是當(dāng)前的進(jìn)程。
命令suspend可以掛起當(dāng)前shell進(jìn)程作業(yè)管理范例作業(yè)管理范例作業(yè)管理范例命令和進(jìn)程的終止按<Ctrl-C>來終止一個前臺進(jìn)程。終止后臺進(jìn)程可用兩種方法中的一種:使用kill命令先使用fg命令把進(jìn)程轉(zhuǎn)向前臺,然后按<Ctrl-C>。kill命令的主要目的是向進(jìn)程發(fā)送信號(也稱為軟中斷)。進(jìn)程接收到信號后,可以采取以下三種行為之一:接受內(nèi)核規(guī)定的默認(rèn)動作忽略該信號截獲該信號并且執(zhí)行用戶定義的動作命令和進(jìn)程的終止為了終止一個忽略15號信號或者其它信號的進(jìn)程,需要使用9號信號,即強(qiáng)制終止信號
進(jìn)程號0可以指代所有在當(dāng)前登錄期間創(chuàng)建的進(jìn)程。因此kill–90命令可以終止所有登錄時產(chǎn)生的進(jìn)程(即,當(dāng)前會話中的所有進(jìn)程),這樣,你自己就不得不退出系統(tǒng)。
Linux進(jìn)程的層次關(guān)系Linux啟動進(jìn)程創(chuàng)建過程Linux進(jìn)程的層次關(guān)系
ps–ef命令或者pstree命令可以用圖的形式顯示當(dāng)前系統(tǒng)中執(zhí)行進(jìn)程的進(jìn)程樹,勾勒出進(jìn)程間的父子關(guān)系。
$pstree–a|more
Bashshell下可以用ulimit顯示用戶可以同時執(zhí)行的最大進(jìn)程個數(shù)$ulimit–u 4071#fedoracore4在TCshell下完成同樣任務(wù)的命令是limit命令。
Linux文件共享方法通過副本共享:復(fù)制需要共享的文件并分發(fā)到組內(nèi)每個成員
通過同一用戶名登錄共享:共用一個賬號登錄系統(tǒng)。
為共享文件設(shè)立適當(dāng)?shù)脑L問權(quán)限:把所有要共享的文件放到一個成員帳號下,設(shè)置組成員具有讀寫和執(zhí)行的權(quán)限
為團(tuán)隊成員建立一個用戶組建立一個新用戶組只包括項目組的所有成員,每個用戶用自己的賬號登錄,為自己的文件設(shè)立適當(dāng)?shù)脑L問權(quán)限,使得它們可以被組中的其他成員訪問。
通過文件鏈接共享,Linux兩類鏈接:
硬鏈接(hardlink)軟(符號)鏈接(Soft/symboliclink)通過文件鏈接共享ln命令用來建立硬鏈接和符號鏈接。
語法:
ln[options]existing-filenew-file ln[options]existing-file-listdirectory 常用選項: -f強(qiáng)迫建立鏈接 -n
如果“new-file”已存在,不創(chuàng)建鏈接。
-s建立一個符號鏈接而不是硬鏈接 -d建立目錄的硬鏈接 例:
$lnChapter3Chapter3.hard硬鏈接硬鏈接是一個指向文件索引節(jié)點的指針。
ln并不會影響文件的內(nèi)容,它只是建立另一個文件名稱而已
例:$ls-iltest12513974-rw-r--r--1rootroot556Jul1221:06test1$lntest1
test2$ls-iltest*2513974-rw-r--r--2rootroot556Jul1221:06test12513974-rw-r--r--2rootroot556Jul1221:06test2
建立新鏈接$lntest1test2
$cattest1WelcometoLinuxWorld$cattest2WelcometoLinuxWo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國單人沙發(fā)市場調(diào)查研究報告
- 2025至2031年中國特級哈密瓜餡行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國原米白醋行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國解熱鎮(zhèn)痛藥數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國半自動環(huán)保節(jié)能型廢紙打包機(jī)數(shù)據(jù)監(jiān)測研究報告
- 二零二五年個人合伙旅游代理合作協(xié)議4篇
- 二零二五年度科研課題授權(quán)委托書匯編3篇
- 二零二五年度個人信息保密與數(shù)據(jù)加密服務(wù)合同4篇
- 二零二五年度健康養(yǎng)生產(chǎn)品銷售合同重要性及市場推廣策略3篇
- 二零二五版辦公用品試用合同模板3篇
- 阿里巴巴國際站:2024年珠寶眼鏡手表及配飾行業(yè)報告
- 高甘油三酯血癥相關(guān)的器官損傷
- 手術(shù)室護(hù)士考試題及答案
- 牙膏項目創(chuàng)業(yè)計劃書
- 浙南名校聯(lián)盟2025屆高一數(shù)學(xué)第二學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 單位食堂供餐方案
- DB42-T 2204-2024 湖沼濕地溫室氣體通量監(jiān)測技術(shù)規(guī)范
- 急性會厭炎的護(hù)理
- 四年級口算題大全(全)
- T-902 千分尺內(nèi)校報告
- 2024公安聯(lián)考行測題庫
評論
0/150
提交評論