Linux操作系統(tǒng)實(shí)驗(yàn)教程.doc_第1頁(yè)
Linux操作系統(tǒng)實(shí)驗(yàn)教程.doc_第2頁(yè)
Linux操作系統(tǒng)實(shí)驗(yàn)教程.doc_第3頁(yè)
Linux操作系統(tǒng)實(shí)驗(yàn)教程.doc_第4頁(yè)
Linux操作系統(tǒng)實(shí)驗(yàn)教程.doc_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Linux操作系統(tǒng)實(shí)驗(yàn)教程第1章 Linux系統(tǒng)概述一、 Linux系統(tǒng)結(jié)構(gòu)從操作系統(tǒng)的角度來(lái)分析Linux,它的體系結(jié)構(gòu)總體上屬于層次結(jié)構(gòu)如下圖所示: 從內(nèi)到外包括三層:最內(nèi)層是系統(tǒng)核心,中間是Shell、編譯編輯實(shí)用程序、庫(kù)函數(shù)等,最外層是用戶程序,包括許多應(yīng)用軟件。從操作系統(tǒng)的功能角度來(lái)看,它的核心有五大部分組成:進(jìn)程管理、存儲(chǔ)管理、文件管理、設(shè)備管理、網(wǎng)絡(luò)管理。各子系統(tǒng)實(shí)現(xiàn)其主要功能,同時(shí)相互之間是合作、依賴的關(guān)系。進(jìn)程會(huì)管理是操作系統(tǒng)最核心的內(nèi)容,它控制了整個(gè)系統(tǒng)的進(jìn)程調(diào)度和進(jìn)程之間的通信,是整個(gè)系統(tǒng)合理高效運(yùn)行的關(guān)鍵;存儲(chǔ)管理為其他子系統(tǒng)提供內(nèi)存管理支持,同時(shí)其他子系統(tǒng)又為內(nèi)存管理提供了實(shí)現(xiàn)支持,例如要通過(guò)文件管理和設(shè)備管理實(shí)現(xiàn)虛擬存儲(chǔ)器和內(nèi)外存的統(tǒng)一管理。二、 配置一個(gè)雙引導(dǎo)系統(tǒng)如果計(jì)算機(jī)中已經(jīng)安裝了其他操作系統(tǒng),并想創(chuàng)建一個(gè)引導(dǎo)系統(tǒng)以便兼用Red Hat Linux和另外的操作系統(tǒng),需要使用雙引導(dǎo)。機(jī)器啟動(dòng)時(shí),可以選擇其中之一,但不能同時(shí)使用兩者。每個(gè)操作系統(tǒng)都從自己的硬盤(pán)驅(qū)動(dòng)器或硬盤(pán)分區(qū)中引導(dǎo),并使用自己的硬盤(pán)驅(qū)動(dòng)器或硬盤(pán)分區(qū)。如果計(jì)算機(jī)上還沒(méi)有安裝任何操作系統(tǒng),可以使用專(zhuān)門(mén)的分區(qū)及格式化軟件給Windows創(chuàng)建指定大小的分區(qū),Windows的文件系統(tǒng)為FAT,再為L(zhǎng)inux系統(tǒng)創(chuàng)建所需要大小的分區(qū)(4G或更大),另外再給Linux留100MB左右的交換分區(qū),Linux的文件系統(tǒng)為ext2。然后就可以安裝系統(tǒng)了。應(yīng)首先安裝Windows,然后再安裝Red Hat Linux。如果只進(jìn)行了分區(qū)而沒(méi)有格式化各分區(qū),在安裝時(shí)可以使用Windows自帶的格式化程序和Linux 自帶的格式化程序進(jìn)行各自分區(qū)的格式化。當(dāng)Windows已經(jīng)被安裝,而且已為L(zhǎng)inux準(zhǔn)備了足夠的磁盤(pán)空間,就可以安裝Linux了。Red Hat Linux安裝程序通常會(huì)檢測(cè)到Windows并自動(dòng)配置引導(dǎo)程序來(lái)引導(dǎo)Windows或Red Hat Linux。安裝完成之后,無(wú)論在什么時(shí)候啟動(dòng)計(jì)算機(jī),都能夠在引導(dǎo)裝載程序屏幕中指明想啟動(dòng)Red Hat Linux還是另外的操作系統(tǒng)。選擇Red Hat Linux來(lái)引導(dǎo)Red Hat Linux;選擇DOS來(lái)引導(dǎo)Windows。三、 Red Hat Linux的安裝將Red Hat Linux9.X安裝光盤(pán)插入光驅(qū),然后啟動(dòng)計(jì)算機(jī),即可從CD-ROM啟動(dòng)Red Hat Linux9.X安裝程序。步驟1,機(jī)器啟動(dòng)之后,顯示boot提示屏幕,其中包括幾個(gè)不同的引導(dǎo)選項(xiàng),每個(gè)引導(dǎo)選項(xiàng)還有一個(gè)或多個(gè)與之關(guān)聯(lián)的幫助屏幕。以圖形方式從光盤(pán)中安裝Red Hat Linux,單擊“回車(chē)”鍵繼續(xù)安裝。步驟2,安裝程序檢測(cè)用戶系統(tǒng)并試圖識(shí)別光驅(qū)。如果找到了,會(huì)進(jìn)入安裝進(jìn)程的下一個(gè)階段。這時(shí)若要終止安裝進(jìn)程,應(yīng)取出光盤(pán),重新引導(dǎo)機(jī)器。步驟3,歡迎使用Red Hat Linux,歡迎屏幕并不提示做任何輸入??砷喿x左側(cè)面板內(nèi)的幫助文字來(lái)獲得附加的說(shuō)明,以及關(guān)于如何注冊(cè)Red Hat Linux產(chǎn)品的信息。單擊next繼續(xù)步驟4,語(yǔ)言選擇。使用鼠標(biāo)選擇要使用的語(yǔ)言。選擇恰當(dāng)?shù)恼Z(yǔ)言會(huì)在稍后的安裝中幫助定位時(shí)區(qū)配置。安裝程序?qū)?huì)根據(jù)這個(gè)屏幕上所指定的信息來(lái)定義恰當(dāng)?shù)臅r(shí)區(qū)。選擇恰當(dāng)?shù)恼Z(yǔ)言(例如簡(jiǎn)體中文)后,單擊next繼續(xù)。步驟5, 鍵盤(pán)配置。用鼠標(biāo)選擇要在今后用作系統(tǒng)默認(rèn)的鍵盤(pán)布局類(lèi)型(例如U.S.English),選定后,單擊next繼續(xù)。如果要在安裝結(jié)束以后,想改變鍵盤(pán)類(lèi)型,可在系統(tǒng)啟動(dòng)后窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設(shè)置/鍵盤(pán)”,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-keyboard命令,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù)。步驟6,鼠標(biāo)配置。為系統(tǒng)選擇正確的鼠標(biāo)類(lèi)型。如果找不到一個(gè)能確定與系統(tǒng)兼容的鼠標(biāo),可以根據(jù)鼠標(biāo)的鍵數(shù)和它的接口,選擇“通用”項(xiàng)目中的一個(gè)。選定鼠標(biāo)型號(hào)以后,單擊next繼續(xù)。如果在安裝結(jié)束以后改變鼠標(biāo)配置,可在系統(tǒng)啟動(dòng)后窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設(shè)置/鼠標(biāo)”,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-mouse命令,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù)。步驟7,選擇安裝還是升級(jí)。如果安裝程序在系統(tǒng)中檢測(cè)到從前安裝的Red Hat Linux版本,則“升級(jí)檢查”屏幕就會(huì)自動(dòng)出現(xiàn)。這里考慮在系統(tǒng)上執(zhí)行Red Hat Linux的新安裝,選擇“執(zhí)行Red Hat Linux的新安裝”,然后單擊next繼續(xù)。步驟8,選擇要執(zhí)行的安裝類(lèi)型。Red Hat Linux的安裝類(lèi)型選項(xiàng)有“個(gè)人桌面”、“工作站”、“服務(wù)器”、“定制” 和“升級(jí)”。選擇“個(gè)人桌面”,單擊next繼續(xù)。步驟9,網(wǎng)絡(luò)配置。安裝程序會(huì)自動(dòng)檢測(cè)到機(jī)器中擁有的任何網(wǎng)絡(luò)設(shè)備,并把它們顯示在“網(wǎng)絡(luò)設(shè)備”列表中。選擇默認(rèn)選項(xiàng)后,單擊next繼續(xù)。要在安裝結(jié)束以后改變網(wǎng)絡(luò)配置,可在系統(tǒng)啟動(dòng)后窗口中單擊屏幕左下角的“紅帽子”,彈出主菜單,選擇“系統(tǒng)設(shè)置/網(wǎng)絡(luò)”,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-network命令,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令后再繼續(xù)。步驟10,為系統(tǒng)選擇恰當(dāng)?shù)陌踩?jí)別。l “高級(jí)”:系統(tǒng)不會(huì)接受那些沒(méi)有被具體制定的連接(除了默認(rèn)設(shè)置,例如DNS回應(yīng)、DHCP之外)。如果要把系統(tǒng)連接到互聯(lián)網(wǎng)上,但是并不打算運(yùn)行服務(wù)器,這是最安全的選擇。如果需要額外的服務(wù),可以選擇“定制”來(lái)具體指定允許通過(guò)防火墻的服務(wù)。l “中級(jí)”:防火墻將不準(zhǔn)系統(tǒng)訪問(wèn)某些資源。可以選擇“定制”來(lái)具體指定允許通過(guò)防火墻的服務(wù)。l “無(wú)防火墻”:給予完全訪問(wèn)權(quán),且不做任何安全檢查。l “信任的設(shè)備”:選擇“信任的設(shè)備”中的任何一個(gè)可使系統(tǒng)接受來(lái)自這一設(shè)備的全部通信而不受防火墻規(guī)則的限制。l “允許進(jìn)入”:?jiǎn)⒂眠@些選項(xiàng),將允許具體指定的服務(wù)穿過(guò)防火墻。防火墻配置完畢,單擊next繼續(xù)。要在安裝完畢后改變安全級(jí)別配置,可在系統(tǒng)啟動(dòng)后的窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設(shè)置/安全級(jí)別”,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-securitylevel命令,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令后再繼續(xù)。步驟11,選擇時(shí)區(qū)。可以通過(guò)選擇計(jì)算機(jī)的物理位置,或指定時(shí)區(qū)和通用協(xié)調(diào)時(shí)間(UTC)之間的偏移來(lái)設(shè)置時(shí)區(qū)。時(shí)區(qū)選定后,單擊next繼續(xù)。要在安裝完成以后改變時(shí)區(qū)配置,可在系統(tǒng)啟動(dòng)后的窗口中單擊屏幕左下角的“紅帽子”,彈出主菜單,選擇“系統(tǒng)設(shè)置/日期&時(shí)間”,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-date命令,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令后再繼續(xù)。步驟12,設(shè)置根口令。設(shè)置根賬號(hào)(即超級(jí)用戶帳號(hào))及其口令是安裝過(guò)程中最重要的步驟之一。根賬號(hào)是用來(lái)安裝軟件包、升級(jí)RPM以及執(zhí)行多數(shù)系統(tǒng)維護(hù)工作。作為根用戶登錄可獲得對(duì)系統(tǒng)的完全控制權(quán)。安裝程序會(huì)提示為系統(tǒng)設(shè)置一個(gè)根口令。如果不輸入根口令,安裝程序?qū)⒉辉试S繼續(xù)。根口令必須至少包括6個(gè)字符,所輸入的口令不會(huì)在屏幕上顯示,口令是區(qū)分大小寫(xiě)的。根口令設(shè)置完畢,單擊next繼續(xù)。要在安裝以后改變根口令,可在系統(tǒng)啟動(dòng)后的窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設(shè)置/根口令”,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-rootpassword命令,如果不是根用戶,系統(tǒng)會(huì)提示輸入根口令后再繼續(xù)。步驟13,個(gè)人桌面的默認(rèn)設(shè)置。安裝程序會(huì)自動(dòng)選擇多數(shù)軟件包。單擊next繼續(xù)。步驟14,選擇軟件包組。在“其他”欄(組件列表的結(jié)尾處)選擇“全部”以安裝包括在Red Hat Linux中的所有軟件包。也可以在選擇軟件包組后,用鼠標(biāo)選擇或取消選擇單個(gè)軟件包。要了解某一指定軟件包的詳情,可單擊該軟件包的名稱(chēng),關(guān)于它的信息將會(huì)在屏幕底部出現(xiàn)。某些軟件包(例如內(nèi)核和某些庫(kù))是每個(gè)系統(tǒng)所必需的,被系統(tǒng)默認(rèn)選定,他們不能被選擇或取消選擇。軟件包設(shè)置完成后,單擊next繼續(xù)。步驟15,至此,應(yīng)該可以看到為安裝Red Hat Linux而準(zhǔn)備好的屏幕。如果由于某種原因希望中斷安裝進(jìn)程,此處是可以安全取消安裝并重新引導(dǎo)系統(tǒng)的最后機(jī)會(huì)。一旦按下了“next”按鈕,分區(qū)將會(huì)被寫(xiě)入,系統(tǒng)將會(huì)被安裝。注意:如果想中止安裝,應(yīng)該在信息被寫(xiě)入硬盤(pán)驅(qū)動(dòng)器之前重新引導(dǎo)系統(tǒng)。繼續(xù)安裝,單擊next繼續(xù)。步驟16,安裝軟件包。在所有軟件包安裝完成之前,將不能進(jìn)行任何其它操作。安裝的快慢取決于所選擇軟件包的數(shù)量和計(jì)算機(jī)的運(yùn)行速度。依據(jù)安裝程序的提示,一次插入第1、第2、第3張Red Hat Linux系統(tǒng)光盤(pán)。步驟16,創(chuàng)建引導(dǎo)盤(pán)。要?jiǎng)?chuàng)建一張引導(dǎo)盤(pán),可在軟驅(qū)中插入一張空白的、格式化了的磁盤(pán),然后單擊next繼續(xù)。步驟17,視頻卡配置。安裝程序給出一個(gè)視頻卡列表供選擇。選定后(或接受系統(tǒng)的默認(rèn)選擇),單擊next繼續(xù)。步驟18,顯示器配置。安裝程序給出一個(gè)顯示器列表供選擇。選定后(或接受系統(tǒng)的默認(rèn)選擇),單擊next繼續(xù)。步驟19,定制圖形化配置。設(shè)置屏幕“色彩深度”和“屏幕分辨率”(或接受系統(tǒng)的默認(rèn)選擇),單擊next繼續(xù)。步驟20,安裝完成。至此,安裝完成。取出軟驅(qū)中的軟盤(pán)和光驅(qū)中的光盤(pán)。單擊“退出”按鈕,來(lái)重新引導(dǎo)系統(tǒng)。一份完整的安裝日志可在/root/install.log中找到,已備今后參考。四、登錄和退出Red Hat Linux系統(tǒng) 1、登錄系統(tǒng)打開(kāi)計(jì)算機(jī),選擇Red Hat Linux,Linux系統(tǒng)開(kāi)始啟動(dòng),之后出現(xiàn)如下登錄界面:輸入用戶名,按回車(chē),系統(tǒng)要求輸入口令,輸入口令后按回車(chē)。如果輸入的用戶名和口令正確,就會(huì)出現(xiàn)以下窗口至此,已經(jīng)進(jìn)入Linux系統(tǒng)。2、退出系統(tǒng)單擊窗口左下角的打開(kāi)主菜單,選擇其中的“注銷(xiāo)”命令,在彈出的對(duì)話框中選擇“關(guān)閉系統(tǒng)”,單擊“確定”按鈕。系統(tǒng)將關(guān)閉,等出現(xiàn)“power down”字樣時(shí),可以關(guān)閉電源。還可使用其他方法退出系統(tǒng),這里不再介紹。五、Linux系統(tǒng)的shell使用Linux系統(tǒng)時(shí),用戶多數(shù)時(shí)間是通過(guò)shell與系統(tǒng)進(jìn)行對(duì)話的。Shell是一個(gè)接受用戶輸入命令并將其轉(zhuǎn)換成指令的程序,是用戶與Linux系統(tǒng)之間的界面之一。shell 提示看起來(lái)類(lèi)似你熟悉的其它命令行界面。用戶在 shell 提示下鍵入命令,shell 解釋這些命令,然后告訴 OS 該怎么做。有經(jīng)驗(yàn)的用戶可以編寫(xiě) shell 腳本來(lái)進(jìn)一步擴(kuò)展這些功能。要打開(kāi)shell,可在啟動(dòng)后的窗口中,單擊屏幕左下角的即主菜單,選擇“系統(tǒng)工具/終端”即可進(jìn)入shell。 還可以右擊桌面并從菜單中選擇新建終端來(lái)啟動(dòng) shell。Shell的界面如下:要退出 shell 提示,點(diǎn)擊 shell 提示窗口右上角的X 按鈕,或在提示中鍵入 exit,或按 Ctrl-D。Linux系統(tǒng)中可以使用的shell有:bash:Bourne Again Shell。由GNU(自由軟件基金會(huì))開(kāi)發(fā)。是Linux系統(tǒng)中最常用的shell,也是Red Hat Linux9x中默認(rèn)的shell。合乎POSIX標(biāo)準(zhǔn)且與Bourne Shell兼容,提供了編輯命令行的功能。csh:c shell。由Berkeley(伯克利大學(xué))開(kāi)發(fā),與Bourne Shell在交互式使用上很多是兼容的,但在程序設(shè)計(jì)界面上卻有很大的不同。不提供命令行編輯功能。ksh:Korn Shell。在UNIX系統(tǒng)下得到普遍應(yīng)用,提供了命令行編輯功能。sh: Bourne Shell。是原始的shell,不提供命令行編輯功能。tcsh:c shell的加強(qiáng)版,提供了命令行編輯功能。zsh:z shell。最新的shell,與Bourne Shell兼容,提供了命令行編輯功能。六、Linux系統(tǒng)文件、目錄和權(quán)限Linux文件名沒(méi)有標(biāo)準(zhǔn)格式。通常文件名可以包含任何字符(“/” 字符除外,“” 字符不能作為文件名的第一個(gè)字符),文件名的長(zhǎng)度限制在256個(gè)字符以內(nèi)。Linux文件名也提供了強(qiáng)大的通配符:l 星號(hào)(*):可以匹配任何字符串。l 問(wèn)號(hào)(?):可匹配任何單個(gè)字符。Linux系統(tǒng)中文件的權(quán)限有3種l Read(可讀)權(quán)限:可以讀取文件內(nèi)的數(shù)據(jù)。l Write(可寫(xiě))權(quán)限:可以改變或刪除該文件。l Execute9(可執(zhí)行)權(quán)限:可以把該文件當(dāng)成程序執(zhí)行。擁有root口令的用戶稱(chēng)為超級(jí)用戶,超級(jí)用戶有權(quán)訪問(wèn)整個(gè)系統(tǒng),包括建立普通帳號(hào)、修改口令、安裝及卸載軟件等。超級(jí)用戶的提示符為#,普通用戶的提示符為$。在Linux文件系統(tǒng)根目錄下,有如下子目錄:bin、dev、etc、home、install、lib、mnt、proc、root、tem、user、var(不同版本,目錄會(huì)略有不同)。/bin目錄:該目錄中存放許多基本的系統(tǒng)程序。/dev目錄:該目錄中存放的是設(shè)備驅(qū)動(dòng)程序,用來(lái)訪問(wèn)系統(tǒng)設(shè)備和資源。/home目錄:用戶主目錄,存放各用戶的子目錄。七、加載USB存儲(chǔ)設(shè)備1.在插入U(xiǎn)盤(pán)或硬盤(pán)之前,以超級(jí)用戶的身份,在命令行窗口運(yùn)行:fdisk -l 命令,系統(tǒng)將顯示目前所能識(shí)別到的硬件存儲(chǔ)設(shè)備;即:# fdisk -l顯示內(nèi)容如:sda sda1 sda2 sdb sdb1 sdb2 等信息,其中,sda與sdb表示目前系統(tǒng)有兩個(gè)硬盤(pán),后面帶有數(shù)字表示各個(gè)硬盤(pán)下的各區(qū)目錄;硬盤(pán)或存儲(chǔ)設(shè)備一般都是以sd開(kāi)頭.2.插入U(xiǎn)盤(pán)或硬盤(pán),再次運(yùn)行fdisk -l 命令,系統(tǒng)將再次顯示目前所能識(shí)別到的硬件存儲(chǔ)設(shè)備,比較兩次輸出的不同,將發(fā)現(xiàn)第二次運(yùn)行時(shí)會(huì)增加一些內(nèi)容;系統(tǒng)將在原來(lái)的基礎(chǔ)上增加顯示:sdc,等內(nèi)容,表示新插入的U盤(pán)或移動(dòng)硬盤(pán)是掛靠在系統(tǒng)的sdc下.3.運(yùn)行mount命令,如:#mkdir /mnt/usb 在mnt下建立usb(自己起的子目錄名)子目錄#mount t vfat /dev/sdc /mnt/usb4.運(yùn)行完畢,可以直接在/mnt/usb目錄下,使用U盤(pán)或移動(dòng)硬盤(pán)若要顯示U盤(pán)或移動(dòng)硬盤(pán)中的中文文件名,可加參數(shù)“ o”,即:可輸入如下命令#mount t vfat /dev/sdc /mnt/usb o iocharset=gb23125. 斷開(kāi)U盤(pán)或移動(dòng)硬盤(pán)之前,運(yùn)行umount命令,保證數(shù)據(jù)不會(huì)造成丟失,命令如下:#umount /dev/sdc共5個(gè)步,即1、用root帳戶登錄;2、mkdir /mnt/usb;(注:創(chuàng)建掛載目錄)3、mount /mnt/sda1 /mnt/usb;(注:掛載U盤(pán))4、現(xiàn)在就可以使用U盤(pán)了,在/mnt/usb目錄下的內(nèi)容就是U盤(pán)里的內(nèi)容了;5、使用完后,用以下命令卸載U盤(pán)即可。#umount /mnt/usb第2章 Linux系統(tǒng)的Shell命令一、目錄管理命令1、建立目錄命令(mkdir)格式:mkdir 目錄名1 目錄名2 常用的選項(xiàng)有-m,指定目錄的模式,即訪問(wèn)權(quán)限,用3位八進(jìn)制數(shù)字跟在后面表示。例:$mkdir d1 d2 d3在當(dāng)前目錄下建立了3個(gè)子目錄,名字分別為d1、d2、d3$mkdir d4 m 775在當(dāng)前目錄下建立名為d4的目錄,訪問(wèn)權(quán)限為775,即該目錄的所有者和同組用戶有讀、寫(xiě)和執(zhí)行這個(gè)目錄的權(quán)限,其他用戶有讀和執(zhí)行權(quán)限。2、刪除目錄(rmdir)格式:rmdir目錄名1 目錄名2 該命令一次可以刪除多個(gè)目錄,刪除目錄時(shí)要求目錄為空。另外,Linux系統(tǒng)還提供了rm命令刪除目錄和文件。Rm名令常用的選項(xiàng)有:-f:如果文件不存在則忽略,并且不提示。-r:遞歸地刪除目錄下的內(nèi)容,rm只有加了這個(gè)參數(shù)才可以刪除目錄。3、改變工作目錄(cd)改變工作目錄命令與PC-DOS的改變工作目錄命令一樣。注意,當(dāng)轉(zhuǎn)到別的用戶目錄時(shí),能執(zhí)行的操作取決于該用戶賦予的權(quán)利。格式:cd 路徑名當(dāng)不給出路徑名時(shí),cd命令的執(zhí)行就轉(zhuǎn)到用戶的注冊(cè)目錄(home)中,即由環(huán)境變量$HOME指定的目錄,否則,轉(zhuǎn)到按路徑名指定的目錄。例如:$cd d1進(jìn)入到當(dāng)前目錄下的d1目錄中$cd /home/y/d2按路徑名轉(zhuǎn)到d2目錄下。$cd 轉(zhuǎn)到y(tǒng)目錄下。指定路徑時(shí),可以使用相對(duì)路徑,也可以用絕對(duì)路徑,這一點(diǎn)和PC-DOS一樣。注:要轉(zhuǎn)到某個(gè)目錄時(shí),必須對(duì)那個(gè)目錄有執(zhí)行權(quán),否則出錯(cuò)。4、確定當(dāng)前目錄所在的位置(pwd)格式:pwd例如:$pwd/home/y/d1當(dāng)前目錄路徑為:/home/y/d15、列出某目錄下的內(nèi)容(ls)該命令與PC-DOS中的dir命令類(lèi)似,列出目錄下的各文件名。格式:ls 選擇項(xiàng)常用的選擇項(xiàng)有:-l:按長(zhǎng)格式列出每個(gè)文件的全部屬性信息(如文件名、文件大小、文件的存取方法等)。-a:列出所有的文件名,包括以“.”開(kāi)始的隱含文件。-s:對(duì)每個(gè)文件按塊給出大小。-i:在第1列給出每個(gè)文件的i節(jié)點(diǎn)號(hào)。-t:按文件最后修改時(shí)間排序列出。-R:列出包括子目錄下的文件名。6、目錄、文件改名和移動(dòng)目錄、文件(mv)格式1:mv 源目錄名 目標(biāo)目錄名功能:如果目標(biāo)目錄不存在,則將源目錄名改為目標(biāo)目錄名。如果目標(biāo)目錄名已經(jīng)存在,則將源目錄移到目標(biāo)目錄之下,作為它的子目錄。此時(shí)要求使用該命令的用戶對(duì)目標(biāo)目錄有寫(xiě)權(quán)限。格式2:mv 源文件名 目標(biāo)文件名功能:將源文件名改為目標(biāo)文件名。格式3:mv 文件名1 文件名2 目錄名功能:將文件1 文件2 傳送到指定的目錄中。常用的選項(xiàng)有:-f:如果目標(biāo)文件存在,則覆蓋目標(biāo)文件而不提示。-u:只復(fù)制目標(biāo)中不存在的文件或更新過(guò)的文件。7、復(fù)制目錄或文件(cp)cp命令既可以復(fù)制目錄也可以復(fù)制文件格式1:cp 選擇項(xiàng) 源目錄名 目標(biāo)目錄名功能:將一個(gè)或多個(gè)源目錄中的文件復(fù)制到目標(biāo)目錄下。格式2:cp 選擇項(xiàng) 源文件名 目標(biāo)文件名功能:把一個(gè)文件復(fù)制到另一個(gè)文件中。格式3:cp 選擇項(xiàng) 文件名1 文件名2 目錄名功能:把一個(gè)或多個(gè)文件復(fù)制到一目錄中。 說(shuō)明:(1)當(dāng)源目錄或源文件為多個(gè)時(shí),各目錄名或各文件名之間用空格分開(kāi)。(2)將一個(gè)文件復(fù)制到目錄時(shí),該目錄必須是可寫(xiě)的,否則復(fù)制失敗。當(dāng)把一個(gè)文件復(fù)制到另一個(gè)文件時(shí),若目標(biāo)文件已經(jīng)存在,則覆蓋之,但覆蓋文件的所有者的存取權(quán)限保持不變。常用的選擇項(xiàng)有:-i:當(dāng)目標(biāo)已經(jīng)存在時(shí),在覆蓋之前,先提示是否覆蓋;-f:如果目標(biāo)文件存在,則覆蓋目標(biāo)文件而不提示;-r:遞歸地復(fù)制源目錄到目標(biāo)目錄;-u:只復(fù)制目標(biāo)中不存在的文件或者更新過(guò)的文件;-R:遞歸地復(fù)制當(dāng)前目錄及子目錄下的文件;-p:復(fù)制時(shí)保持文件的屬性;-d:復(fù)制時(shí)保持鏈接關(guān)系;8、顯示目錄所占磁盤(pán)空間的大?。╠u)格式:du 選擇項(xiàng) 目錄名常用的選擇項(xiàng)有:-a:遞歸地顯示所有目錄下的文件占用的空間;-h:以可讀形式列出各文件大??;-s:只顯示該目錄的大小,目錄中的各文件占用的空間不顯示二、文件管理1、顯示文件內(nèi)容命令(cat和more)(1)連接和顯示文件(cat)格式1:cat 文件1 文件2功能:連續(xù)顯示各文件的內(nèi)容。各文件之間沒(méi)有標(biāo)志也沒(méi)有空行。格式2:catfile1功能:建立一個(gè)文件名為file1的文件。用ctrl+d組合鍵結(jié)束文件的輸入。格式3:cat 文件1 文件2文件3功能:將文件1和文件2的內(nèi)容寫(xiě)到文件3中。格式4:cat文件1 文件2文件3功能:將文件1和文件2的內(nèi)容附加到文件3的末尾。(2)分屏顯示文件內(nèi)容(more)格式:more 選擇項(xiàng) 文件1 文件2如果一屏顯示不完,按空格鍵可以顯示下一屏的內(nèi)容。隨時(shí)按q鍵退出該命令。常用的選擇項(xiàng)有:+行號(hào):從文件的指定行號(hào)開(kāi)始顯示。+/字符串:從文件中指定的字符串前兩行開(kāi)始顯示。-s:把文件中的多個(gè)空行壓縮成一個(gè)空行。2、刪除文件命令(rm)格式:rm 選擇項(xiàng) 文件名1 文件名2常用的選擇項(xiàng)有:-f:如果文件不存在則忽略,并且刪除前不提示。-r:遞歸地刪除目錄下的內(nèi)容,只有加了該參數(shù)才可以刪除目錄。3、統(tǒng)計(jì)文件中的行、字和字符數(shù)(wc)格式:wc 選擇項(xiàng) 文件名常用的選擇項(xiàng)有:-l:只對(duì)指定文件中的行進(jìn)行統(tǒng)計(jì)。-w:只對(duì)指定文件中的字進(jìn)行統(tǒng)計(jì)。-c:只對(duì)指定文件中的字符進(jìn)行統(tǒng)計(jì)。如果沒(méi)有選擇項(xiàng),wc的統(tǒng)計(jì)順序?yàn)?,先統(tǒng)計(jì)行,再統(tǒng)計(jì)字,然后統(tǒng)計(jì)字符。最后給出被統(tǒng)計(jì)的文件名。三、其它1、檢查磁盤(pán)剩余空間(df)2、echo格式: echo -n word/string此命令把每個(gè)單詞或字符串寫(xiě)入shell的標(biāo)準(zhǔn)輸出.四、變量和參數(shù)在shell程序中,共有6種類(lèi)型的變量1、變量的定義定義變量的格式:變量名=表達(dá)式用$可以取得變量的值,如:$num為num的值。2、位置變量位置變量是在調(diào)用shell程序的命令行中按照確定的位置決定的變量。位置變量用來(lái)存儲(chǔ)Shell程序后面所跟的參數(shù)。第一個(gè)參數(shù)存儲(chǔ)在變量1中,第二個(gè)參數(shù)存儲(chǔ)在變量2中,依次類(lèi)推。在程序名之后輸入的每個(gè)參數(shù)之間用空格分隔。$0是當(dāng)前該命令文件的名字。例如,編寫(xiě)一個(gè)Shell程序reverse,執(zhí)行時(shí)帶兩個(gè)參數(shù)。輸出時(shí),將兩個(gè)參數(shù)的位置顛倒。reverse的內(nèi)容為:#program reverse, prints the command line parameters out in reverse orderecho $2 $1在Shell下執(zhí)行此Shell程序:reverse hello there其輸出為:there hello3、shell預(yù)定義變量有些變量在執(zhí)行Shell程序時(shí)系統(tǒng)就設(shè)置好了,并且不能加以修改:$# 存儲(chǔ)運(yùn)行Shell程序時(shí)輸入的位置參數(shù)的個(gè)數(shù)。$? 存儲(chǔ)上一個(gè)執(zhí)行命令的返回值。$* 存儲(chǔ)從第一個(gè)位置參數(shù)開(kāi)始的所有位置參數(shù)的內(nèi)容。$ 存儲(chǔ)所有命令行輸入的參數(shù),分別表示為“$ 1”,“$ 2” . . . 。$ 存儲(chǔ)當(dāng)前執(zhí)行進(jìn)程的進(jìn)程標(biāo)識(shí)PID。$! 存儲(chǔ)上一個(gè)后臺(tái)執(zhí)行命令的進(jìn)程標(biāo)識(shí)PID。五、運(yùn)算符和表達(dá)式Shell中的運(yùn)算符包括運(yùn)算符 描述 示例 文件運(yùn)算符 -e filename 如果 filename存在,則為真 -e /var/log/syslog -d filename 如果 filename為目錄,則為真 -d /tmp/mydir -f filename 如果 filename為常規(guī)文件,則為真 -f /usr/bin/grep -L filename 如果 filename為符號(hào)鏈接,則為真 -L /usr/bin/grep -r filename 如果 filename可讀,則為真 -r /var/log/syslog -w filename 如果 filename可寫(xiě),則為真 -w /var/mytmp.txt -x filename 如果 filename可執(zhí)行,則為真 -L /usr/bin/grep filename1-nt filename2 如果 filename1比 filename2新,則為真 /tmp/install/etc/services -nt /etc/services filename1-ot filename2 如果 filename1比 filename2舊,則為真 /boot/bzImage -ot arch/i386/boot/bzImage 字符串比較運(yùn)算符 (請(qǐng)注意引號(hào)的使用,這是防止空格擾亂代碼的好方法) -z string 如果 string長(zhǎng)度為零,則為真 -z $myvar -n string 如果 string長(zhǎng)度非零,則為真 -n $myvar string1= string2 如果 string1與 string2相同,則為真 $myvar = one two three string1!= string2 如果 string1與 string2不同,則為真 $myvar != one two three 算術(shù)比較運(yùn)算符 num1-eq num2 等于 3 -eq $mynum num1-ne num2 不等于 3 -ne $mynum num1-lt num2 小于 3 -lt $mynum num1-le num2 小于或等于 3 -le $mynum num1-gt num2 大于 3 -gt $mynum num1-ge num2 算術(shù)運(yùn)算符:- +-*/%大于或等于(在*和/之前必須冠以反斜線“”)負(fù)號(hào) 加號(hào) 減號(hào) 乘號(hào) 除號(hào) 取余 3 -ge $mynum - 3 3 + 5 8 3 2 * 3 6 / 2 5 % 2 在腳本程序中可以用運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)構(gòu)成的式子稱(chēng)為表達(dá)式。六、shell控制語(yǔ)句1、if語(yǔ)句格式1:if 條件表達(dá)式 then 命令序列 fi格式2:if 條件表達(dá)式 then 命令序列 else 命令序列 fi格式3:if 條件表達(dá)式 then 命令序列 elif 條件表達(dá)式 then 命令序列 else 命令序列 fi格式4:if test 條件表達(dá)式 then 命令序列 elif test 條件表達(dá)式 then 命令序列 . else 命令序列 fi說(shuō)明:(1)格式1、格式2、格式3中的“”和“”兩側(cè)要留有空格(2)格式4中的“”不屬于if語(yǔ)句中的符號(hào),只在本格式中說(shuō)明“”中的內(nèi)容可以重復(fù)出現(xiàn)多次。2、for循環(huán)語(yǔ)句 格式1: for 變量 in 值表do命令表done格式2: for 變量 in 文件正則表達(dá)式do命令表done 其執(zhí)行過(guò)程是,變量的值依次取當(dāng)前目錄下(或給定目錄下)與正則表達(dá)式相匹配的文件名,每取值一次,就進(jìn)入循環(huán)體執(zhí)行命令表,直至所有匹配的文件名取完為止,退出for循環(huán)。 格式3: for i in $* 或者 for i do do命令表 命令表done done 這兩種形式是等價(jià)的。其執(zhí)行過(guò)程是,變量i 依次取位置參數(shù)的值,然后執(zhí)行循環(huán)體中的命令表,直至所有位置參數(shù)取完為止。 3、while循環(huán)語(yǔ)句格式:while條件表達(dá)式 do命令表done 其執(zhí)行過(guò)程是,先進(jìn)行條件測(cè)試,如果結(jié)果為真,則進(jìn)入循環(huán)體(dodone之間部分), 執(zhí)行其中命令;然后再做條件測(cè)試直至測(cè)試條件為假時(shí)才終止while語(yǔ)句的執(zhí)行。4、until語(yǔ)句格式:until 條件表達(dá)式do命令表done 它與while語(yǔ)句很相似,只是測(cè)試條件不同:當(dāng)測(cè)試條件為假時(shí),才進(jìn)入循環(huán)體,直至測(cè)試條件為真時(shí)終止循環(huán)。5、break語(yǔ)句和continue語(yǔ)句break語(yǔ)句可以使我們從循環(huán)體中退出來(lái)。格式: break n 其中,n表示要跳出幾層循環(huán)。默認(rèn)值是1,表示只跳出一層循環(huán)。 continue語(yǔ)句跳過(guò)循環(huán)體中在它之后的語(yǔ)句,回到本層循環(huán)的開(kāi)頭,進(jìn)行下一次循環(huán)。格式: continue n 其中,n表示從包含continue語(yǔ)句的最內(nèi)層循環(huán)體向外跳到第幾層循環(huán)。默認(rèn)值為1。循環(huán)層數(shù)是由內(nèi)向外編號(hào)。 6、case語(yǔ)句case語(yǔ)句允許進(jìn)行多重條件選擇。格式:case 字符串 in模式字符串1) 命令序列1; ;模式字符串2) 命令序列2; ;模式字符串n) 命令序列n; ;esac 其執(zhí)行過(guò)程是用“字符串”的值依次與各模式字符串進(jìn)行比較,如果發(fā)現(xiàn)同某一個(gè)匹配,那么就執(zhí)行該模式字符串之后的各個(gè)命令,直至遇到兩個(gè)分號(hào)為止。如果沒(méi)有任何模式字符串與該字符串的值相符合,則不執(zhí)行任何命令。 在使用case語(yǔ)句時(shí)應(yīng)注意:(1)每個(gè)模式字符串后面可有一條或多條命令,其最后一條命令必須以兩個(gè)分號(hào)(即;)結(jié)束。(2)模式字符串中可以使用通配符。(3) 如果一個(gè)模式字符串中包含多個(gè)模式,那么各模式之間應(yīng)以豎線(|)隔開(kāi),表示各模式是“或”的關(guān)系,即只要給定字符串與其中一個(gè)模式相配,就會(huì)執(zhí)行其后的命令表。(4)各模式字符串應(yīng)是惟一的,不應(yīng)重復(fù)出現(xiàn)。并且要合理安排它們的出現(xiàn)順序。例如,不應(yīng)將“*”作為頭一個(gè)模式字符串,因?yàn)椤?”可以與任何字符串匹配,它若第一個(gè)出現(xiàn),就不會(huì)再檢查其它模式了。(5)case語(yǔ)句以關(guān)鍵字case開(kāi)頭,以關(guān)鍵字esac(是case倒過(guò)來(lái)寫(xiě)!)結(jié)束。(6)case的退出(返回)值是整個(gè)結(jié)構(gòu)中最后執(zhí)行的那個(gè)命令的退出值。若沒(méi)有執(zhí)行任何命令,則退出值為零。7、expr語(yǔ)句 雖然shell并不精于數(shù)值計(jì)算,但還是提供了有關(guān)的計(jì)算語(yǔ)句。格式:expr 表達(dá)式1 表達(dá)式2 表達(dá)式中只允許整數(shù),合法的運(yùn)算符有+、-、*、/和%(取余),在*(乘號(hào))和/(除號(hào))之前必須冠以(反斜杠),以防這些運(yùn)算符由expr獲得之前被shell解釋。例如:$expr 3 * 5 + 2 / 2 16注意:運(yùn)算符兩側(cè)要留有空格。8、read語(yǔ)句利用read語(yǔ)句命令可以從鍵盤(pán)上讀取數(shù)據(jù),然后賦給指定的變量格式:read 變量1 變量2 例如:read x y z輸入數(shù)據(jù)時(shí),數(shù)據(jù)間以空格或制表符作為分隔符。如果變量個(gè)數(shù)與給定數(shù)據(jù)個(gè)數(shù)相同,則依次對(duì)應(yīng)賦值;如果變量個(gè)數(shù)少于數(shù)據(jù)個(gè)數(shù),則從左至右對(duì)應(yīng)賦值,但最后一個(gè)變量被賦予剩余的所有數(shù)據(jù);如果變量個(gè)數(shù)多于給定數(shù)據(jù)個(gè)數(shù),則依次對(duì)應(yīng)賦值,而沒(méi)有數(shù)據(jù)與之對(duì)應(yīng)的變量取空串。9、舉例例1 從控制臺(tái)接收用戶輸入,并在標(biāo)準(zhǔn)輸出設(shè)備上顯示結(jié)果echo “Are you girl?please answer Y or N”read sexif $sex = “Y” ;thenecho “Hello girl!”echo “How are you!”else echo “Hello boy!”echo “How do you do!”fiecho “ABC”exit 0例2 echo “Are you girl?please answer Y or N”read sexif test $sex = “Y” then echo “Hello girl!”elif test $sex= “N”then echo “Hello boy!”else echo “sorry,$sex not recognized,please entey Y or N”exit 1fiexit 0例3 for day in Mon Tue Wed Thu Fri Sat Sundoecho $daydone 其執(zhí)行過(guò)程是,變量day依次取值表中各字符串,即第一次將“Mon”賦給day,然后進(jìn)入循環(huán)體,執(zhí)行其中的命令,顯示出Mon。第二次將“Tue”賦給day,然后執(zhí)行循環(huán)體中命令,顯示出Tue。依次處理,當(dāng)day把值表中各字符串都取過(guò)一次之后,下面day的值就變?yōu)榭沾?,從而結(jié)束for循環(huán)。因此,值表中字符串的個(gè)數(shù)就決定了for循環(huán)執(zhí)行的次數(shù)。在格式上,值表中各字符串之間以空格隔開(kāi)。例4 while $1 doif -f $1 then echo display : $1 cat $1else echo $1 is not a file name . fishiftdone 這段程序?qū)Ω鱾€(gè)給定的位置參數(shù),首先判斷其是否是普通文件,若是,則顯示其內(nèi)容;否則,顯示它不是文件名的信息。每次循環(huán)處理一個(gè)位置參數(shù)$1,利用shift命令可把后續(xù)位置參數(shù)左移。 測(cè)試條件部分除使用test命令或等價(jià)的方括號(hào)外,還可以是一組命令。根據(jù)其最后一個(gè)命令的退出值決定是否進(jìn)入循環(huán)體執(zhí)行。例5 編寫(xiě)一個(gè)簡(jiǎn)單的刪除程序#name: del#author: liangnian#this program to compress a file to the dustbinif test $# -eq 0 thenecho “Please specify a file!” elsegzip $1 /先對(duì)文件進(jìn)行壓縮mv $1.gz $HOME/dustbin /移動(dòng)到回收站echo “File $1 is deleted !”fi10、Shell腳本的建立和執(zhí)行(1)Shell腳本的建立Shell程序可以存放在文件中,這種被Shell解釋執(zhí)行的命令文件稱(chēng)為Shell腳本 (Shell Script)。Shell腳本可以包含任意從鍵盤(pán)鍵入的Linux命令。建立Shell腳本的步驟同建立普通文本文件的方式相同,利用任何編輯器(如vi)進(jìn)行程序錄入和編輯加工。例如,要建立一個(gè)名為ex1的Shell腳本,可在提示符后輸入命令:$ viex1 進(jìn)入vi的插入方式后,就可錄入程序行。完成編輯之后,將編輯緩沖區(qū)內(nèi)容寫(xiě)入文件中,返回到Shell命令狀態(tài)。(2)執(zhí)行Shell腳本格式:$ bash腳本名參數(shù) 例如:$ bashex1 /usr/meng/usr/zhang Shell從文件ex1中讀取命令行,并執(zhí)行它們。當(dāng)Shell到達(dá)文件末尾時(shí)就終止執(zhí)行,并把控制返回到Shell命令狀態(tài)。若有參數(shù),則將參數(shù)值傳遞給程序中的命令,使一個(gè)Shell腳本可以處理多種情況,就如同函數(shù)調(diào)用時(shí)可根據(jù)具體問(wèn)題給定相應(yīng)的實(shí)參。第3章 Linux系統(tǒng)調(diào)用函數(shù)簡(jiǎn)介1、fork( ):創(chuàng)建一個(gè)新進(jìn)程格式:int fork()其中返回int值的意義如下: 0:創(chuàng)建子進(jìn)程,從子進(jìn)程返回0:從父進(jìn)程返回,返回值為子進(jìn)程的進(jìn)程標(biāo)識(shí)符-1:創(chuàng)建失敗2、vfork( ):創(chuàng)建一個(gè)新進(jìn)程格式:int vfork()其中返回int值的意義如下:0:創(chuàng)建子進(jìn)程,從子進(jìn)程返回0:從父進(jìn)程返回,返回值為子進(jìn)程的進(jìn)程標(biāo)識(shí)符-1:創(chuàng)建失敗vfork()和fork()不同之處在于:在fork調(diào)用中,子進(jìn)程復(fù)制父進(jìn)程的數(shù)據(jù)區(qū)作為自己的數(shù)據(jù)區(qū),能夠繼承已有的資源,從而對(duì)數(shù)據(jù)的操作不再影響父進(jìn)程。vfork()函數(shù)在創(chuàng)建子進(jìn)程后,先于父進(jìn)程運(yùn)行,父進(jìn)程被阻塞,在子進(jìn)程調(diào)用exec或exit之前,子進(jìn)程與父進(jìn)程共享數(shù)據(jù)段,此時(shí)可對(duì)父進(jìn)程的數(shù)據(jù)進(jìn)行操作。3、execv():運(yùn)行可執(zhí)行文件格式:int execv(const char *file,char *argv,char *envp)其中返回int值的意義如下:0:正確返回-1:錯(cuò)誤返回當(dāng)一個(gè)進(jìn)程調(diào)用execv函數(shù)執(zhí)行另一個(gè)程序后,這個(gè)進(jìn)程被新程序取代,包括代碼段、數(shù)據(jù)段、堆棧段等等,并繼承原進(jìn)程的進(jìn)程標(biāo)識(shí)符。從自己的main()函數(shù)開(kāi)始執(zhí)行。新程序使用原進(jìn)程的進(jìn)程標(biāo)識(shí)符和進(jìn)程控制表里的一部分信息。 該函數(shù)要用到unistd.h頭文件,即在程序中要有#include4、wait():進(jìn)程的等待Wait函數(shù)常用來(lái)控制父進(jìn)程與子進(jìn)程的同步。在父進(jìn)程中調(diào)用wait函數(shù),則父進(jìn)程被阻塞,進(jìn)入等待隊(duì)列,等待子進(jìn)程結(jié)束。當(dāng)子進(jìn)程結(jié)束時(shí),會(huì)產(chǎn)生一個(gè)終止?fàn)顟B(tài)字,系統(tǒng)會(huì)向父進(jìn)程發(fā)出SIGCHLD信號(hào)。當(dāng)接收到信號(hào)后,父進(jìn)程提取子進(jìn)程的終止?fàn)顟B(tài)字,從wait返回繼續(xù)執(zhí)行原程序。該函數(shù)適用的頭文件如下:#include#include函數(shù)格式:pidt wait(int *statloc)子進(jìn)程ID:正確返回 0:其他 -1:錯(cuò)誤返回可以使用系統(tǒng)提供的宏來(lái)獲得子進(jìn)程終止時(shí)的信息,這些宏定義在sys/wait.h頭文件中,具體含義如下:WIFEXITED(status):子進(jìn)程正常終止,返回真。WEXITSTATUS(status):如果WIFEXITED返回真,則該宏返回子進(jìn)程的exit碼。WIFSIGNALED(status):子進(jìn)程非正常終止,返回真。WTERMSIG(status):如果WIFSIGNALED返回真,則該宏返回引起子進(jìn)程終止的信號(hào)值。WIFSTOPPED(status):子進(jìn)程已結(jié)束,返回真。WSTOPSIG(status):如果WIFSTOPPED返回真,則該宏返回引起子進(jìn)程結(jié)束的信號(hào)值。5、waitpid()如果父進(jìn)程創(chuàng)建了多個(gè)子進(jìn)程同時(shí)在運(yùn)行,則父進(jìn)程中wait函數(shù)會(huì)捕獲它任一個(gè)子進(jìn)程的結(jié)束信號(hào),而無(wú)法讓它確定地去捕獲某一個(gè)進(jìn)程的結(jié)束信號(hào)。Waitpid函數(shù)則解決了這個(gè)問(wèn)題。該函數(shù)適用的頭文件如下:#include#include函數(shù)格式:pidt waitpid(pidt pid,int *statloc,int options)子進(jìn)程ID:正確返回 0:其他 -1:錯(cuò)誤返回參數(shù)pid的值決定要求父進(jìn)程等待的不同特征的子進(jìn)程,含義如下:0:與父進(jìn)程組ID相同的子進(jìn)程。0:進(jìn)程ID為pid的子進(jìn)程。-1:任意子進(jìn)程。此時(shí)與wait函數(shù)功能相同。-1:進(jìn)程組ID為pid絕對(duì)值的子進(jìn)程。Statloc所指的地址用于存放子進(jìn)程的終止?fàn)顟B(tài)字。Options控制waitpid的執(zhí)行,常用的參數(shù)如WNOHANG:若waitpid函數(shù)沒(méi)得到指定子進(jìn)程的結(jié)束信號(hào),則立即返回零,不會(huì)阻塞。6、exit():結(jié)束進(jìn)程 進(jìn)程結(jié)束最常用的方法是調(diào)用exit函數(shù),在main函數(shù)中調(diào)用的return,最終也是調(diào)用exit,這些都屬于進(jìn)程的正常終止。該函數(shù)適用的頭文件如下:#include函數(shù)格式:void exit(int status)Status為進(jìn)程結(jié)束狀態(tài)。在子進(jìn)程調(diào)用exit后,子進(jìn)程的結(jié)束狀態(tài)會(huì)返回給系統(tǒng)內(nèi)核,由內(nèi)核根據(jù)狀態(tài)字生成終止?fàn)顟B(tài),供父進(jìn)程在wait或waitpid函數(shù)中讀取。如果子進(jìn)程結(jié)束后,父進(jìn)程還沒(méi)有讀取子進(jìn)程的終止?fàn)顟B(tài),則系統(tǒng)就將子進(jìn)程的狀態(tài)置為“ZOMBIE”,并保留子進(jìn)程的進(jìn)程控制塊,里面記錄著進(jìn)程標(biāo)識(shí)符、終止?fàn)顟B(tài)字、CPU時(shí)間等信息,等父進(jìn)程讀取信息后,系統(tǒng)才徹底釋放子進(jìn)程的進(jìn)程控制塊。7、msgget():獲得一個(gè)消息的描述符,該描述符指定一個(gè)消息隊(duì)列以便用于其他系統(tǒng)調(diào)用。該函數(shù)適用的頭文件如下:#include#include#include函數(shù)格式:int msgget(key,flag) keyt key; int flag ;消息隊(duì)列的標(biāo)識(shí)符:正確返回 -1: 錯(cuò)誤返回Key是鍵值,這個(gè)鍵值要與已有的鍵值進(jìn)行比較,已有的鍵值指在內(nèi)核中已存在的其他消息隊(duì)列鍵值。當(dāng)key的值為IPCPRIVATE時(shí),創(chuàng)建一個(gè)新的消息隊(duì)列;當(dāng)key的值不為IPCPRIVATE時(shí),對(duì)消息隊(duì)列的打開(kāi)或存取操作依賴于flag參數(shù)的取值。8、msgsnd():發(fā)送一條消息給一個(gè)消息隊(duì)列該函數(shù)適用的頭文件如下:#include#include#include函數(shù)格式:int msgsnd(id,smgp,size,flag) int id,size,flag; struct msgbuf* msgp;消息隊(duì)列的標(biāo)識(shí)符:正確返回 -1:錯(cuò)誤返回其中:id是返回消息隊(duì)列的標(biāo)識(shí)符;msgp是指向用戶存儲(chǔ)區(qū)的一個(gè)構(gòu)造體指針,size指示由msgp指向的數(shù)據(jù)結(jié)構(gòu)中字符數(shù)組的長(zhǎng)度,即消息隊(duì)列的長(zhǎng)度;flag規(guī)定當(dāng)核心用盡內(nèi)部緩沖空間時(shí)應(yīng)執(zhí)行的動(dòng)作;若在標(biāo)志flag中未設(shè)置IPCNOWAIT位,則當(dāng)該消息隊(duì)列中的字節(jié)數(shù)超過(guò)一最大值時(shí),或系統(tǒng)范圍的消息數(shù)超過(guò)某一最大值時(shí),則調(diào)用進(jìn)程將被阻塞,進(jìn)入

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論