版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Linux程序設(shè)計(jì)環(huán)境CH06Linux內(nèi)核之進(jìn)程和文件共享內(nèi)容回顧-1Shell腳本編程入門注釋的含義test命令幾個(gè)經(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ī)制硬鏈接和符號(hào)鏈接進(jìn)程的基本概念Onatimesharing(分時(shí))systemwithonlyoneCPU: Multipleprocessesareexecutedsimultaneously(并發(fā))byquicklyswitchingtheCPUfromoneprocesstoanotherTheshortCPUtime,thatisgiventoaprocessiscalledaquantum時(shí)間片(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é)束(正?;蛘叻钦=K止)并退出系統(tǒng)。當(dāng)進(jìn)程完成它的工作并正常退出系統(tǒng),進(jìn)程就是正常終止。當(dāng)進(jìn)程是因?yàn)樵诋惓#ㄥe(cuò)誤)條件下退出系統(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)程在運(yùn)行(是系統(tǒng)的當(dāng)前進(jìn)程)或者準(zhǔn)備運(yùn)行(等待被安排到系統(tǒng)的一個(gè)CPU上)。進(jìn)程控制塊有一個(gè)run_list成員,所有處于TASK_RUNNING狀態(tài)的進(jìn)程都通過該成員鏈在一起,稱之為可運(yùn)行隊(duì)列。
TASK_INTERRUPTIBLE:進(jìn)程處于某個(gè)等待隊(duì)列中,它能夠被信號(hào)(signal)或中斷喚醒。等待資源的請求滿足時(shí),也被喚醒。
TASK_UNINTERRUPTIBLE:進(jìn)程處于某個(gè)等待隊(duì)列中,不能被信號(hào)或中斷喚醒,只有等待的資源被滿足時(shí)才被喚醒。例如當(dāng)進(jìn)程打開一個(gè)設(shè)備文件時(shí),使用TASK_UNINTERRUPTIBLE
TASK_ZOMBIE:進(jìn)程已經(jīng)停止,但還沒有釋放進(jìn)程控制塊
TASK_STOPPED:可能是被特定的信號(hào)終止,也可能是受其它進(jìn)程的跟蹤調(diào)用而暫時(shí)將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)部命令如.(點(diǎn)命令)、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)建另外一個(gè)進(jìn)程,該操作建立原進(jìn)程內(nèi)存的完全拷貝。這兩個(gè)進(jìn)程接著fork后的語句執(zhí)行。Theforkingprocessisknownastheparentprocess(父進(jìn)程)
Thecreated(forked)processiscalledthe
childprocess(子進(jìn)程)Shell命令的執(zhí)行和進(jìn)程bashshell創(chuàng)建一個(gè)進(jìn)程Shell命令的執(zhí)行和進(jìn)程為了執(zhí)行一個(gè)外部二進(jìn)制命令,需要一種機(jī)制使子進(jìn)程成為要執(zhí)行的命令
LINUX系統(tǒng)調(diào)用exec完成這項(xiàng)工作,進(jìn)程可以用另外一個(gè)命令的可執(zhí)行代碼來覆蓋自身。
shell先后使用fork和exec系統(tǒng)調(diào)用來執(zhí)行一個(gè)外部二進(jìn)制命令。Shell命令的執(zhí)行和進(jìn)程Shell命令的執(zhí)行和進(jìn)程shell腳本的執(zhí)行同二進(jìn)制文件的執(zhí)行略有不同。
Shell腳本的執(zhí)行:
當(dāng)前shell創(chuàng)建一個(gè)子shell并讓子shell依次執(zhí)行shell腳本中的命令,腳本中每一個(gè)命令的執(zhí)行與從鍵盤輸入的命令采用相同的方式子shell為每一個(gè)要執(zhí)行的命令創(chuàng)建一個(gè)子進(jìn)程。子shell執(zhí)行腳本文件中的命令時(shí),父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í)行的時(shí)間Linux進(jìn)程屬性ps命令用來查看系統(tǒng)中運(yùn)行的進(jìn)程的各種屬性Linux進(jìn)程屬性使用范例Linux進(jìn)程屬性進(jìn)程管理
top命令:實(shí)時(shí)監(jiān)視CPU的活動(dòng)狀態(tài)。該命令顯示系統(tǒng)中CPU密集型任務(wù)的狀態(tài)并且允許你交互地控制這些進(jìn)程。該命令按照CPU使用情況、內(nèi)存使用情況和執(zhí)行時(shí)間對進(jìn)程進(jìn)行排序。top命令執(zhí)行時(shí),可以用各種命令與之交互。當(dāng)使用交互命令時(shí),top提示你一個(gè)或者多個(gè)與它要完成的工作有關(guān)的問題。
kill命令:終止指定PID的進(jìn)程。進(jìn)程管理使用范例作業(yè)管理當(dāng)鍵入命令并敲<Enter>后,shell執(zhí)行命令在當(dāng)前命令執(zhí)行結(jié)束即shell返回前,你不能執(zhí)行任何命令。這種執(zhí)行命令的方式,稱之為在前臺(tái)foreground執(zhí)行需要運(yùn)行一個(gè)要花費(fèi)很長時(shí)間才能完成的LINUX命令(或者任一這樣的程序),當(dāng)命令執(zhí)行時(shí),你無法做其它工作。
LINUX可以在執(zhí)行命令的同時(shí)做其他工作。這種能力稱為在后臺(tái)background執(zhí)行命令。
作業(yè)管理在命令后面加上一個(gè)“與”操作符號(hào)(&),使該命令在后臺(tái)操作。當(dāng)一個(gè)任務(wù)在后臺(tái)運(yùn)行時(shí):前端shell命令行繼續(xù)工作
可以繼續(xù)執(zhí)行其他shell命令作業(yè)管理允許用戶執(zhí)行一個(gè)命令而不需要等待前一個(gè)命令的完成。作業(yè)管理Example:$find/-namefoo–print>foo.paths2>/dev/null& [1]23467括號(hào)中shell返回的數(shù)字是該進(jìn)程的作業(yè)號(hào)(jobnumber);另外一個(gè)數(shù)字是進(jìn)程PID。
find命令的作業(yè)號(hào)是1,其PID為23467。
作業(yè)是一個(gè)不運(yùn)行于前臺(tái)的進(jìn)程,并且只能在關(guān)聯(lián)的終端上訪問。這樣的進(jìn)程通常在后臺(tái)執(zhí)行或者成為被掛起的進(jìn)程。作業(yè)管理fg命令可以使后臺(tái)進(jìn)程轉(zhuǎn)到前臺(tái)作業(yè)管理使用<Ctrl-Z>掛起一個(gè)前臺(tái)進(jìn)程。使用bg命令把被掛起的進(jìn)程轉(zhuǎn)到后臺(tái)。使用jobs命令顯示所有掛起的(停止的)和后臺(tái)進(jìn)程的作業(yè)號(hào),確定哪一個(gè)是當(dāng)前的進(jìn)程。
命令suspend可以掛起當(dāng)前shell進(jìn)程作業(yè)管理范例作業(yè)管理范例作業(yè)管理范例命令和進(jìn)程的終止按<Ctrl-C>來終止一個(gè)前臺(tái)進(jìn)程。終止后臺(tái)進(jìn)程可用兩種方法中的一種:使用kill命令先使用fg命令把進(jìn)程轉(zhuǎn)向前臺(tái),然后按<Ctrl-C>。kill命令的主要目的是向進(jìn)程發(fā)送信號(hào)(也稱為軟中斷)。進(jìn)程接收到信號(hào)后,可以采取以下三種行為之一:接受內(nèi)核規(guī)定的默認(rèn)動(dòng)作忽略該信號(hào)截獲該信號(hào)并且執(zhí)行用戶定義的動(dòng)作命令和進(jìn)程的終止為了終止一個(gè)忽略15號(hào)信號(hào)或者其它信號(hào)的進(jìn)程,需要使用9號(hào)信號(hào),即強(qiáng)制終止信號(hào)
進(jìn)程號(hào)0可以指代所有在當(dāng)前登錄期間創(chuàng)建的進(jìn)程。因此kill–90命令可以終止所有登錄時(shí)產(chǎn)生的進(jìn)程(即,當(dāng)前會(huì)話中的所有進(jìn)程),這樣,你自己就不得不退出系統(tǒng)。
Linux進(jìn)程的層次關(guān)系Linux啟動(dòng)進(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顯示用戶可以同時(shí)執(zhí)行的最大進(jìn)程個(gè)數(shù)$ulimit–u 4071#fedoracore4在TCshell下完成同樣任務(wù)的命令是limit命令。
Linux文件共享方法通過副本共享:復(fù)制需要共享的文件并分發(fā)到組內(nèi)每個(gè)成員
通過同一用戶名登錄共享:共用一個(gè)賬號(hào)登錄系統(tǒng)。
為共享文件設(shè)立適當(dāng)?shù)脑L問權(quán)限:把所有要共享的文件放到一個(gè)成員帳號(hào)下,設(shè)置組成員具有讀寫和執(zhí)行的權(quán)限
為團(tuán)隊(duì)成員建立一個(gè)用戶組建立一個(gè)新用戶組只包括項(xiàng)目組的所有成員,每個(gè)用戶用自己的賬號(hào)登錄,為自己的文件設(shè)立適當(dāng)?shù)脑L問權(quán)限,使得它們可以被組中的其他成員訪問。
通過文件鏈接共享,Linux兩類鏈接:
硬鏈接(hardlink)軟(符號(hào))鏈接(Soft/symboliclink)通過文件鏈接共享ln命令用來建立硬鏈接和符號(hào)鏈接。
語法:
ln[options]existing-filenew-file ln[options]existing-file-listdirectory 常用選項(xiàng): -f強(qiáng)迫建立鏈接 -n
如果“new-file”已存在,不創(chuàng)建鏈接。
-s建立一個(gè)符號(hào)鏈接而不是硬鏈接 -d建立目錄的硬鏈接 例:
$lnChapter3Chapter3.hard硬鏈接硬鏈接是一個(gè)指向文件索引節(jié)點(diǎn)的指針。
ln并不會(huì)影響文件的內(nèi)容,它只是建立另一個(gè)文件名稱而已
例:$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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外科護(hù)理技能訓(xùn)練
- 2025年便攜血壓計(jì)校準(zhǔn)合同協(xié)議
- 2025年白酒線上銷售銷售目標(biāo)協(xié)議
- 基于注意力機(jī)制預(yù)測
- 化工企業(yè)冬季風(fēng)險(xiǎn)防控與異常工況處置實(shí)踐-CCSA
- 2026年海外宏觀展望:美國AI投資拉動(dòng)內(nèi)需貨幣財(cái)政雙寬托底
- DB50∕T 1903-2025 地理標(biāo)志產(chǎn)品 墊江白柚
- 臨床腸息肉的診療解讀(定義、分型、病理、報(bào)告解讀、治療、預(yù)防與發(fā)展方向)
- 元代美術(shù)題庫及答案
- 2026 年中職酒店管理(餐飲營銷)試題及答案
- 2025年電商主播分成合同(傭金收益)
- 藥學(xué)監(jiān)護(hù)實(shí)踐方法
- 電商孵化基地運(yùn)營方案
- 部編版四年級(jí)語文上冊第七單元試卷(含答案)
- 建筑材料費(fèi)用預(yù)算表
- 人事經(jīng)理工作方案匯報(bào)
- 《電力變壓器聲紋檢測技術(shù)導(dǎo)則》
- 2025年全國中考真題匯編專題11:議論文閱讀【含答案】
- 垃圾填埋場數(shù)字化管理系統(tǒng)方案
- 上海醫(yī)療廢物管理辦法
- 保密監(jiān)督檢查培訓(xùn)課件
評論
0/150
提交評論