版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.1Linux下進(jìn)程概述4.1.1進(jìn)程的概念1.進(jìn)程的引入2.進(jìn)程及其特征(1)動(dòng)態(tài)性(2)并發(fā)性(3)獨(dú)立性(4)異步性(5)結(jié)構(gòu)特征:進(jìn)程由程序、數(shù)據(jù)和進(jìn)程控制塊三部分組成
3.進(jìn)程與程序的關(guān)系程序是指令的有序集合,其本身沒有任何運(yùn)行的含義,是一個(gè)靜態(tài)的概念。而進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過程,它是一個(gè)動(dòng)態(tài)的概念。程序可以作為一種軟件資料長期存在,而進(jìn)程是有一定生命期的。程序是永久的,進(jìn)程是暫時(shí)的。
4.1.2進(jìn)程的結(jié)構(gòu)(1)進(jìn)程狀態(tài)(2)調(diào)度信息(3)標(biāo)識(shí)符(4)內(nèi)部進(jìn)程通信信息(5)鏈接信息
(6)時(shí)間和計(jì)時(shí)器(7)文件系統(tǒng)(8)虛擬內(nèi)存信息(9)處理器信息
4.2Linux進(jìn)程控制編程4.2.1進(jìn)程的創(chuàng)建方法:調(diào)用系統(tǒng)調(diào)用fork系統(tǒng)調(diào)用的語法格式:
pid=fork();
4.2.2進(jìn)程的等待pid_twait(int*stat_loc)
;pid_twaitpid(pid_tpid,int*stat_loc,intoptions)
;
wait系統(tǒng)調(diào)用會(huì)使父進(jìn)程阻塞直到一個(gè)子進(jìn)程結(jié)束。如果沒有父進(jìn)程,沒有子進(jìn)程或者其子進(jìn)程已經(jīng)結(jié)束,wait會(huì)立即返回。成功時(shí)wait將返回子進(jìn)程的ID,否則返回-1,并設(shè)置全局變量errno.stat_loc是子進(jìn)程的退出狀態(tài)。
4.2.3進(jìn)程的終止核心為系統(tǒng)調(diào)用exit完成下列操作:(1)撤銷所有的信號(hào)量(2)釋放其所有的資源,包括存儲(chǔ)空間、已打開文件、工作目錄、信號(hào)處理表等。(3)把進(jìn)程狀態(tài)置為“終止態(tài)”(4)向其父進(jìn)程發(fā)送子進(jìn)程終止的信號(hào)。(5)執(zhí)行相應(yīng)的進(jìn)程調(diào)度。
4.2.4進(jìn)程映像的更換核心為系統(tǒng)調(diào)用exec完成下列操作:(1)驗(yàn)證文件的可執(zhí)行性,即用戶有權(quán)執(zhí)行它。(2)讀文件頭,檢查它是一個(gè)可裝入模塊。(3)釋放原有的內(nèi)存空間。(4)按照可執(zhí)行文件的要求分配新的內(nèi)存空間,并裝入內(nèi)存。
4.3Linux守護(hù)進(jìn)程守護(hù)進(jìn)程(Daemon)是運(yùn)行在后臺(tái)的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。守護(hù)進(jìn)程是一種很有用的進(jìn)程。Linux的大多數(shù)服務(wù)器就是用守護(hù)進(jìn)程實(shí)現(xiàn)的。
4.3.1守護(hù)進(jìn)程及其特性守護(hù)進(jìn)程最重要的特性是后臺(tái)運(yùn)行。在這一點(diǎn)上DOS下的常駐內(nèi)存程序TSR與之相似。守護(hù)進(jìn)程必須與其運(yùn)行前的環(huán)境隔離開來。
4.3.2守護(hù)進(jìn)程的編程要點(diǎn)(1)在后臺(tái)運(yùn)行。(2)脫離控制終端、登錄會(huì)話和進(jìn)程組(3)禁止進(jìn)程重新打開控制終端(4)關(guān)閉打開的文件描述符(5)改變當(dāng)前工作目錄(6)重設(shè)文件創(chuàng)建掩模(7)處理SIGCHLD信號(hào)
4.4Linux內(nèi)核簡(jiǎn)介Linux內(nèi)核的主要用途就是為了與計(jì)算機(jī)硬件進(jìn)行交互,實(shí)現(xiàn)對(duì)硬件部件的編程控制和接口操作,調(diào)度對(duì)硬件資源的訪問,并為計(jì)算機(jī)上的用戶程序提供一個(gè)高級(jí)的執(zhí)行環(huán)境和對(duì)硬件的虛擬接口。Linux內(nèi)核主要由5個(gè)模塊構(gòu)成,它們分別是:進(jìn)程調(diào)度模塊、內(nèi)存管理模塊、文件系統(tǒng)模塊、進(jìn)程間通信模塊和網(wǎng)絡(luò)接口模塊。
4.5shell基本工作原理及編程Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼,為用戶提供使用操作系統(tǒng)的接口。它是用戶和Linux內(nèi)核之間的接口程序。shell是一個(gè)命令語言解釋器,類似于DOS下的程序,它擁有自己內(nèi)建的shell命令集,shell也能被系統(tǒng)中其他應(yīng)用程序所調(diào)用。
shell有很多種,如:csh,tcsh,pdksh,ash,sash,zsh,bash等。Linux的缺省shell為bash(BourneAgainshell)。用戶如何知道安裝的Linux版本支持哪些shell?在提示符下輸入:
cat/etc/shells如果用戶想知道自己現(xiàn)在使用的是哪種shell,可以在提示符后輸入:
echo$SHELL
4.5.1shell的基本工作原理(1)讀取用戶由鍵盤輸入的命令行。(2)分析命令,以命令名作為文件名,并將其它參數(shù)改造為系統(tǒng)調(diào)用execve()內(nèi)部處理所要求的形式。(3)終端進(jìn)程調(diào)用fork()建立一個(gè)子進(jìn)程。(4)終端進(jìn)程本身用系統(tǒng)調(diào)用wait4()來等待子進(jìn)程完成(如果是后臺(tái)命令,則不等待)。
(5)如果命令末尾有&號(hào)(后臺(tái)命令符號(hào)),則終端進(jìn)程不用系統(tǒng)調(diào)用wait4()等待,立即發(fā)提示符,讓用戶輸入下一個(gè)命令,轉(zhuǎn)⑴。如果命令末尾沒有&號(hào),則終端進(jìn)程要一直等待,當(dāng)子進(jìn)程(即運(yùn)行命令的進(jìn)程)完成處理后終止,向父進(jìn)程(終端進(jìn)程)報(bào)告,此時(shí)終端進(jìn)程醒來,在做必要的判別等工作后,終端進(jìn)程發(fā)提示符,讓用戶輸入新的命令,重復(fù)上述處理過程。
4.5.2創(chuàng)建和執(zhí)行shell腳本
1.創(chuàng)建shell腳本
shell腳本是使用用戶環(huán)境shell提供的語句所編寫的命令文件。用戶可以用任何編輯器來編寫shell腳本。因?yàn)閟hell腳本是解釋執(zhí)行的,所以不需要編譯成目標(biāo)文件。
2.執(zhí)行shell腳本執(zhí)行shell腳本的方式基本上有三種:(1)輸入定向到shell腳本利用輸入重定向,使shell命令解釋程序的輸入取自指定的文件。一般形式是:$bash<腳本名例如:$bash<hellotestshell從文件hellotest中讀取命令行,并執(zhí)行它們。當(dāng)shell到達(dá)文件末尾時(shí)就終止執(zhí)行,并把控制返回到shell命令狀態(tài)。要注意的是,這種執(zhí)行方式腳本名后面不能帶參數(shù)。(2)以腳本名作為參數(shù)其一般形式是:$bash腳本名[參數(shù)]例如:$bashiftestmorn其執(zhí)行過程與上一種方式一樣,但這種方式能在腳本名后面帶參數(shù),從而將參數(shù)值傳遞給程序中的命令。(3)用chmod命令使shell腳本權(quán)限設(shè)置為可執(zhí)行的
4.5.3shell變量1.用戶變量用戶變量是最常用的變量,使用也十分簡(jiǎn)單。變量名必須是以字母和下劃線開頭的字母、數(shù)字及下劃線序列組成,并且變量名是大小寫敏感的。用戶變量的賦值很簡(jiǎn)單,一般形式為:變量名=字符串/數(shù)字
2.系統(tǒng)變量系統(tǒng)變量是Linux所提供的一種特殊類型的變量,shell常用的系統(tǒng)變量并不多,但卻十分有用,特別是在做一些參數(shù)檢測(cè)的時(shí)候。
3.環(huán)境變量shell環(huán)境變量是所有shell程序都會(huì)接受的參數(shù)。shell程序運(yùn)行時(shí),都會(huì)接收一組變量,這組變量就是環(huán)境變量。常用的shell環(huán)境變量有:(1)HOME用于保存注冊(cè)目錄的全路徑名。(2)PATH用于保存用冒號(hào)分隔的目錄路徑名。(3)UID當(dāng)前用戶的識(shí)別字,取值是由數(shù)位構(gòu)成的字串。(4)PWD當(dāng)前工作目錄的絕對(duì)路徑名,該變量的取值隨cd命令的使用而變化。(5)PS1主提示符,在特權(quán)用戶下,默認(rèn)的主提示符是#,在普通用戶下,默認(rèn)的主提示符是$。(6)PS2在shell接收用戶輸入命令的過程中,如果用戶在輸入行的末尾輸入“\”然后回車,或者當(dāng)用戶按回車鍵時(shí)shell判斷出用戶輸入的命令沒有結(jié)束時(shí),就顯示這個(gè)輔助提示符,提示用戶繼續(xù)輸入命令的其余部分,默認(rèn)的輔助提示符是>。(7)TERM用戶終端的類型。
4.位置參數(shù)位置參數(shù)是一種在調(diào)用shell程序的命令行中按照各自的位置決定的變量,是在程序名之后輸入的參數(shù)。位置參數(shù)之間用空格分隔,shell取第一個(gè)位置參數(shù)替換程序文件中的$1,第二個(gè)替換$2,依次類推。$0是一個(gè)特殊的變量,它的內(nèi)容是當(dāng)前這個(gè)shell程序的文件名,所以,$0不是一個(gè)位置參數(shù),在顯示當(dāng)前所有的位置參數(shù)時(shí)是不包括$0的。
4.5.4shell的特性1.通配符和命令補(bǔ)齊功能通配符(wildcards)是轉(zhuǎn)義字符的子集,下表給出了通配符的含義:
2.輸入輸出重定向系統(tǒng)定義三個(gè)標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入(stdin)、標(biāo)準(zhǔn)輸出(stdout)、標(biāo)準(zhǔn)錯(cuò)誤輸入(stderr)。(1)注釋和管道符注釋:在shell腳本中,以“#”開頭的正文行表示注釋。特別的是,第一行以“#!”開頭,表示腳本所使用的shell的絕對(duì)路徑。例:#!/bin/bash
#Thisscriptisatest!管道線:將一個(gè)命令的輸出連接到另一個(gè)命令的輸入。例:ls|sort
(2)過濾器(filters):用來接收標(biāo)準(zhǔn)輸入,經(jīng)過一定的轉(zhuǎn)化,再寫到標(biāo)準(zhǔn)輸出。所以,過濾器一般放在管道符中間。常用的過濾器如下:expand,sed,awk,fmt,tac,tr,grep,nl,pr。
重定向用來改變程序運(yùn)行的輸入來源和輸出地點(diǎn)。我們可以通過重定向?qū)⒊绦虻妮斎攵ㄏ虻侥硞€(gè)指定的文件,或者將程序的輸出結(jié)果定向到某個(gè)指定的文件。①輸出重定向命令>文件名:將命令執(zhí)行結(jié)果送到指定的文件,而不在屏幕上顯示。如果指定的文件不存在,則新建這一文件;如果指定文件存在,則原來的內(nèi)容被覆蓋。命令>>文件名:在進(jìn)行重定向時(shí),只是追加到已有的文件之后,該文件原有的內(nèi)容不被破壞。
②輸入重定向命令<文件名:把命令的標(biāo)準(zhǔn)輸入重新定向到指定文件。命令<<文件名:here文檔,也稱即時(shí)文檔。當(dāng)前命令的標(biāo)準(zhǔn)輸入來自命令行中一對(duì)分隔符之間的正文。
3.命令換行符多條命令可以輸入到一行中,并用“;”字符分隔。在一行命令后加“\”表示另起一行繼續(xù)輸入,下一行的提示符變?yōu)椤?gt;”,繼續(xù)輸入命令,按回車結(jié)束。
4.別名使用alias命令,可以定義一些別名。例:#alias‘rm–f’rm
5.更改登錄用戶命令su的意思是“substituteusers”(代替用戶),它允許用戶暫時(shí)以其他用戶身份登錄。
6.特殊字符雙引號(hào)由雙引號(hào)括起來的字符,除$(用來訪問變量的值),`(命令替換),\(轉(zhuǎn)義字符)保留其特殊功能外,其余的字符都作為普通字符處理。單引號(hào)用單引號(hào)括起來的字符都作為普通字符出現(xiàn)。倒引號(hào)用倒引號(hào)括起來的字符串被shell解釋為命令行。在執(zhí)行的時(shí)候,shell會(huì)先執(zhí)行該命令行,并以它的標(biāo)準(zhǔn)輸出結(jié)果取代整個(gè)倒引號(hào)部分。反斜杠轉(zhuǎn)義字符(metacharacters),即把特殊字符變成普通字符。
4.5.5控制結(jié)構(gòu)1.測(cè)試語句shell中進(jìn)行條件測(cè)試用test命令,test命令的語法如下:test條件表達(dá)式或者
[條件表達(dá)式]test命令可以進(jìn)行數(shù)值測(cè)試、字符串測(cè)試、文件測(cè)試和邏輯操作符等的測(cè)試
2.條件語句(1)if語句if語句用于條件控制結(jié)構(gòu)中,其一般格式為:if測(cè)試條件
then
命令1else
命令2fi
(2)case語句case語句允許進(jìn)行多重條件選擇。其一般語法形式是:case字符串in模式字符串1)命令…命令;;模式字符串2)命令…命令;;…模式字符串n)命令…命令;;*)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)數(shù)學(xué)二年級(jí)下冊(cè)口算練習(xí)100題-二年級(jí)數(shù)學(xué)口算練題
- 急診醫(yī)療服務(wù)規(guī)范制度
- 13.1.2線段的垂直平分線性質(zhì)(第二課時(shí))
- 2024年西安客運(yùn)駕駛員考試選擇題及答案解析
- 算法設(shè)計(jì)與分析 課件 1.2.1-算法分析準(zhǔn)則 - 正確性
- 2024年杭州客運(yùn)考試應(yīng)用能力試題及答案詳解
- 2024年廣西客車駕駛員從業(yè)資格證考試題庫
- 2024年山西c1客運(yùn)資格證模擬考試題下載什么軟件
- 2024年四川客運(yùn)從業(yè)資格證考試技巧口訣
- 2024年長沙客運(yùn)從業(yè)資格證試題答案
- 汽車文化知識(shí)考試參考題庫400題(含答案)
- WDZANYJY23低壓電力電纜技術(shù)規(guī)格書
- 《水循環(huán)》-完整版課件
- 抗高血壓藥物基因檢測(cè)課件
- 西游記 品味經(jīng)典名著導(dǎo)讀PPT
- 金壇區(qū)蘇科版四年級(jí)心理健康教育第1課《我的興趣愛好》課件(定稿)
- 心肌缺血和心肌梗死的心電圖表現(xiàn)講義課件
- 小學(xué)生性教育調(diào)查問卷
- 學(xué)歷案的編寫課件
- 旅游行政管理第二章旅游行政管理體制課件
- 衛(wèi)生院關(guān)于召開基本公共衛(wèi)生服務(wù)項(xiàng)目培訓(xùn)會(huì)的通知
評(píng)論
0/150
提交評(píng)論