




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Linux程序設(shè)計環(huán)境CH06Linux內(nèi)核之進程和文件共享內(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)核中進程的基本概念進程管理作業(yè)管理Linux內(nèi)核中的文件機制硬鏈接和符號鏈接進程的基本概念Onatimesharing(分時)systemwithonlyoneCPU: Multipleprocessesareexecutedsimultaneously(并發(fā))byquicklyswitchingtheCPUfromoneprocesstoanotherTheshortCPUtime,thatisgiventoaprocessiscalledaquantum時間片(100msec)ThetechniqueusedbythekerneltochoosethenextprocessthatgetstheCPUiscalledCPUscheduling(cpu調(diào)度)CPUschedulingisimplementedinthekernel(內(nèi)核)進程的基本概念CPUschedulingonatimesharingsystem:Apriorityvalue(優(yōu)先數(shù))isassignedtoeveryprocessTheprocesswiththehighestprioritytakestheCPUnextThesimplestschedulingalgorithmiscalledfirst-come-first-served(FCFS)AnotheralgorithmassignshighestprioritytotheI/OBoundprocesses(ProcessesthatspendmostoftheirtimedoingI/O.Ex:vieditor)RoundRobin(RR)AprocessgetstousetheCPUforonequantumandthentheCPUisgiventoanotherprocess,thenextprocessinthequeueofprocesseswaitingtousetheCPULinuxusesacombinationofthesealgorithms進程的基本概念
LINUX進程可以處于多種狀態(tài)中的一種。進程可以從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài),直到執(zhí)行結(jié)束(正?;蛘叻钦=K止)并退出系統(tǒng)。當進程完成它的工作并正常退出系統(tǒng),進程就是正常終止。當進程是因為在異常(錯誤)條件下退出系統(tǒng)或者在其擁有者或特權(quán)用戶的干涉下退出系統(tǒng),它便是非正常終止。Linux2.4進程有5種狀態(tài);Linux2.6進程有7種狀態(tài)。Linux進程狀態(tài)Linux進程狀態(tài)
TASK_RUNNING:進程在運行(是系統(tǒng)的當前進程)或者準備運行(等待被安排到系統(tǒng)的一個CPU上)。進程控制塊有一個run_list成員,所有處于TASK_RUNNING狀態(tài)的進程都通過該成員鏈在一起,稱之為可運行隊列。
TASK_INTERRUPTIBLE:進程處于某個等待隊列中,它能夠被信號(signal)或中斷喚醒。等待資源的請求滿足時,也被喚醒。
TASK_UNINTERRUPTIBLE:進程處于某個等待隊列中,不能被信號或中斷喚醒,只有等待的資源被滿足時才被喚醒。例如當進程打開一個設(shè)備文件時,使用TASK_UNINTERRUPTIBLE
TASK_ZOMBIE:進程已經(jīng)停止,但還沒有釋放進程控制塊
TASK_STOPPED:可能是被特定的信號終止,也可能是受其它進程的跟蹤調(diào)用而暫時將CPU交給跟蹤它的進程。TASK_TRACED(2.6)TASK_DEAD(2.6)Shell命令的執(zhí)行和進程
Shell命令可以是內(nèi)部或者外部命令。
內(nèi)部(內(nèi)置)命令(internal(built-in)command)的代碼本身就是shell進程的一部分。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)容可以是二進制代碼或者shell腳本。通常使用的一些外部命令如grep、more、cat、mkdir、rmdir、ls、sort、ftp、telnet、lp和ps。
LINUX進程通過系統(tǒng)調(diào)用fork創(chuàng)建另外一個進程,該操作建立原進程內(nèi)存的完全拷貝。這兩個進程接著fork后的語句執(zhí)行。Theforkingprocessisknownastheparentprocess(父進程)
Thecreated(forked)processiscalledthe
childprocess(子進程)Shell命令的執(zhí)行和進程bashshell創(chuàng)建一個進程Shell命令的執(zhí)行和進程為了執(zhí)行一個外部二進制命令,需要一種機制使子進程成為要執(zhí)行的命令
LINUX系統(tǒng)調(diào)用exec完成這項工作,進程可以用另外一個命令的可執(zhí)行代碼來覆蓋自身。
shell先后使用fork和exec系統(tǒng)調(diào)用來執(zhí)行一個外部二進制命令。Shell命令的執(zhí)行和進程Shell命令的執(zhí)行和進程shell腳本的執(zhí)行同二進制文件的執(zhí)行略有不同。
Shell腳本的執(zhí)行:
當前shell創(chuàng)建一個子shell并讓子shell依次執(zhí)行shell腳本中的命令,腳本中每一個命令的執(zhí)行與從鍵盤輸入的命令采用相同的方式子shell為每一個要執(zhí)行的命令創(chuàng)建一個子進程。子shell執(zhí)行腳本文件中的命令時,父shell等待子shell結(jié)束。當子shell遇到腳本文件的結(jié)束標志,它就終止。子shell的唯一目的是執(zhí)行命令,eof意味著沒有其它的命令了。當子shell終止,父shell結(jié)束等待狀態(tài),開始重新執(zhí)行。Shell命令的執(zhí)行和進程Linux進程屬性進程包含以下屬性:OwnersIDProcessnameProcessID(PID)ProcessstateParentprocessIDLenghtoftimetheprocesshasbeenrunning進程已執(zhí)行的時間Linux進程屬性ps命令用來查看系統(tǒng)中運行的進程的各種屬性Linux進程屬性使用范例Linux進程屬性進程管理
top命令:實時監(jiān)視CPU的活動狀態(tài)。該命令顯示系統(tǒng)中CPU密集型任務(wù)的狀態(tài)并且允許你交互地控制這些進程。該命令按照CPU使用情況、內(nèi)存使用情況和執(zhí)行時間對進程進行排序。top命令執(zhí)行時,可以用各種命令與之交互。當使用交互命令時,top提示你一個或者多個與它要完成的工作有關(guān)的問題。
kill命令:終止指定PID的進程。進程管理使用范例作業(yè)管理當鍵入命令并敲<Enter>后,shell執(zhí)行命令在當前命令執(zhí)行結(jié)束即shell返回前,你不能執(zhí)行任何命令。這種執(zhí)行命令的方式,稱之為在前臺foreground執(zhí)行需要運行一個要花費很長時間才能完成的LINUX命令(或者任一這樣的程序),當命令執(zhí)行時,你無法做其它工作。
LINUX可以在執(zhí)行命令的同時做其他工作。這種能力稱為在后臺background執(zhí)行命令。
作業(yè)管理在命令后面加上一個“與”操作符號(&),使該命令在后臺操作。當一個任務(wù)在后臺運行時:前端shell命令行繼續(xù)工作
可以繼續(xù)執(zhí)行其他shell命令作業(yè)管理允許用戶執(zhí)行一個命令而不需要等待前一個命令的完成。作業(yè)管理Example:$find/-namefoo–print>foo.paths2>/dev/null& [1]23467括號中shell返回的數(shù)字是該進程的作業(yè)號(jobnumber);另外一個數(shù)字是進程PID。
find命令的作業(yè)號是1,其PID為23467。
作業(yè)是一個不運行于前臺的進程,并且只能在關(guān)聯(lián)的終端上訪問。這樣的進程通常在后臺執(zhí)行或者成為被掛起的進程。作業(yè)管理fg命令可以使后臺進程轉(zhuǎn)到前臺作業(yè)管理使用<Ctrl-Z>掛起一個前臺進程。使用bg命令把被掛起的進程轉(zhuǎn)到后臺。使用jobs命令顯示所有掛起的(停止的)和后臺進程的作業(yè)號,確定哪一個是當前的進程。
命令suspend可以掛起當前shell進程作業(yè)管理范例作業(yè)管理范例作業(yè)管理范例命令和進程的終止按<Ctrl-C>來終止一個前臺進程。終止后臺進程可用兩種方法中的一種:使用kill命令先使用fg命令把進程轉(zhuǎn)向前臺,然后按<Ctrl-C>。kill命令的主要目的是向進程發(fā)送信號(也稱為軟中斷)。進程接收到信號后,可以采取以下三種行為之一:接受內(nèi)核規(guī)定的默認動作忽略該信號截獲該信號并且執(zhí)行用戶定義的動作命令和進程的終止為了終止一個忽略15號信號或者其它信號的進程,需要使用9號信號,即強制終止信號
進程號0可以指代所有在當前登錄期間創(chuàng)建的進程。因此kill–90命令可以終止所有登錄時產(chǎn)生的進程(即,當前會話中的所有進程),這樣,你自己就不得不退出系統(tǒng)。
Linux進程的層次關(guān)系Linux啟動進程創(chuàng)建過程Linux進程的層次關(guān)系
ps–ef命令或者pstree命令可以用圖的形式顯示當前系統(tǒng)中執(zhí)行進程的進程樹,勾勒出進程間的父子關(guān)系。
$pstree–a|more
Bashshell下可以用ulimit顯示用戶可以同時執(zhí)行的最大進程個數(shù)$ulimit–u 4071#fedoracore4在TCshell下完成同樣任務(wù)的命令是limit命令。
Linux文件共享方法通過副本共享:復(fù)制需要共享的文件并分發(fā)到組內(nèi)每個成員
通過同一用戶名登錄共享:共用一個賬號登錄系統(tǒng)。
為共享文件設(shè)立適當?shù)脑L問權(quán)限:把所有要共享的文件放到一個成員帳號下,設(shè)置組成員具有讀寫和執(zhí)行的權(quán)限
為團隊成員建立一個用戶組建立一個新用戶組只包括項目組的所有成員,每個用戶用自己的賬號登錄,為自己的文件設(shè)立適當?shù)脑L問權(quán)限,使得它們可以被組中的其他成員訪問。
通過文件鏈接共享,Linux兩類鏈接:
硬鏈接(hardlink)軟(符號)鏈接(Soft/symboliclink)通過文件鏈接共享ln命令用來建立硬鏈接和符號鏈接。
語法:
ln[options]existing-filenew-file ln[options]existing-file-listdirectory 常用選項: -f強迫建立鏈接 -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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年文化學(xué)考試試題及答案
- 2025年大學(xué)生趣味化學(xué)知識競賽試題庫及答案(共300題)
- 2025年三農(nóng)政策測試題及答案
- 2025年高考語文備戰(zhàn)20首經(jīng)典古代詩詞鑒賞
- 2025年高考生物選擇題增分技巧匯編
- 部編版小學(xué)語文一年級下冊期中測試卷(一)(含答案)
- Unit 9 Can you come to my party(1)單元練習(xí) (無答案)人教版八年級英語上冊
- 優(yōu)化辦公室空間布局的方案研究
- 項目進度跟蹤臺賬管理表
- 營銷推廣策劃與執(zhí)行指南
- 貴州省2025年初中學(xué)業(yè)水平考試英語模擬練習(xí)卷(含答案含聽力二維碼無音頻及原文)
- 第20課《井岡翠竹》部編版2024-2025七年級語文下冊
- 2025年溫州市圖盛供電服務(wù)有限公司招聘筆試參考題庫含答案解析
- 尼康D3200中文說明書(完整版)
- 文明施工、環(huán)境保護管理體系與措施
- 應(yīng)急物資倉儲管理與調(diào)度
- 2025年河南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南科技職業(yè)學(xué)院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 2024年新疆生產(chǎn)建設(shè)兵團興新職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 西學(xué)中培訓(xùn)基地結(jié)業(yè)考試試題
- 2024年醫(yī)師定考題庫匯編
評論
0/150
提交評論