![Linux程序設(shè)計(jì)基礎(chǔ)概述_第1頁](http://file4.renrendoc.com/view10/M01/33/36/wKhkGWWnPraAAo8GAABax-NPlNE688.jpg)
![Linux程序設(shè)計(jì)基礎(chǔ)概述_第2頁](http://file4.renrendoc.com/view10/M01/33/36/wKhkGWWnPraAAo8GAABax-NPlNE6882.jpg)
![Linux程序設(shè)計(jì)基礎(chǔ)概述_第3頁](http://file4.renrendoc.com/view10/M01/33/36/wKhkGWWnPraAAo8GAABax-NPlNE6883.jpg)
![Linux程序設(shè)計(jì)基礎(chǔ)概述_第4頁](http://file4.renrendoc.com/view10/M01/33/36/wKhkGWWnPraAAo8GAABax-NPlNE6884.jpg)
![Linux程序設(shè)計(jì)基礎(chǔ)概述_第5頁](http://file4.renrendoc.com/view10/M01/33/36/wKhkGWWnPraAAo8GAABax-NPlNE6885.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux程序設(shè)計(jì)內(nèi)容Linux程序設(shè)計(jì)根底Shell程序設(shè)計(jì)Linux文件與內(nèi)存管理Linux進(jìn)程管理Linux網(wǎng)絡(luò)程序設(shè)計(jì)Linux數(shù)據(jù)庫編程課時(shí)及成績(jī)?cè)u(píng)定總共40學(xué)時(shí)講課28學(xué)時(shí)實(shí)驗(yàn)12學(xué)時(shí)平時(shí):50%(考勤+實(shí)驗(yàn))期末:50%(卷考或機(jī)考或大作業(yè))使用教材參考書目鳥哥的Linux私房菜〔兩本:根底篇和應(yīng)用效勞器篇〕科學(xué)出版社Linux應(yīng)用程序開發(fā)〔第二版〕LinuxapplicationdevelopmentMichaelK.Jonhenson著武延軍郭松柳
LinuxC/C++入門與進(jìn)階科學(xué)出版社第1章Linux程序設(shè)計(jì)根底Linux操作系統(tǒng)概述Shell命令GNUC開發(fā)環(huán)境Unix/Linux的開展Unix-likeOSsUNIXTTSVersion1..10KenThompsonDennisRitchieSystemIII,VHP-UX11v2AIX(IBM)5.3UnixWare(Univel/SCO)7.14IRIX(SGI)6.5.30SystemIII&VFamilyBSD(BerkeleySoftwareDistribution)1970198019902000timeSunOS(Stanford)Solaris(SUN)10Mach(CMU)FreeBSD7.0NetBSD4.0OpenBSD4.2NextStepMacOS10.4.6XenixOS(MS/SCO)GNUProjectLinux2.6.**MinixBSDFamilyBillJoyRichardStallmanLinuxTorvalsUnix的產(chǎn)生與開展1968年,由通用電器公司、貝爾實(shí)驗(yàn)室和麻省理工學(xué)院的研究人員開發(fā)了一個(gè)名為Multics的操作系統(tǒng),使用戶可通過線接入遠(yuǎn)程終端,對(duì)隨后的操作系統(tǒng),特別是Unix的成功有著巨大的影響。1969-1970年,AT&T的貝爾實(shí)驗(yàn)室研究人員KenTompson和DennisRitchie在Multics根底上用C語言開發(fā)出Unix系統(tǒng)。當(dāng)時(shí),AT&T公司以低廉的價(jià)格甚至免費(fèi)將Unix源碼授權(quán)給學(xué)術(shù)機(jī)構(gòu)用于研究和教學(xué)。Unix的產(chǎn)生與開展貝爾實(shí)驗(yàn)室AT&T從1983年發(fā)行了第一個(gè)商業(yè)版本,名systemⅢ,后來被具有良好商用軟件支持的SystemⅤ所替代。1978年伯克利大學(xué)在第六版本的根底上進(jìn)行了修改,增加了新的功能,發(fā)布了BSD。形成了SystemV和BSD兩大系列。Systemv系列名稱廠家基于的版本AIXInternationalBussinessMachinesAT&TSystemVIrixSiliconGraphicsAT&TSystemVSolarisSunMicrosystemsAT&TSystemVUnicosCrayAT&TSystemVUnixWareNovellAT&TSystemVXENIXMicrosoftAT&TSystemIIIBSD系列名稱提供者DynixSequentSunOSSunMicrosystemsUltrixDigitalEquipmentCorporationFreeBSD支持intel、AMD和SunUltraSPARC,基于4.4BSD-Lite架構(gòu)NetBSD支持Alpha,DraCo和Shark等多種硬件,基于4.3BSDLite架構(gòu)OpenBSD衍生自NetBSD,支持DECAlpha和Intel等多種硬件UNIX的相關(guān)標(biāo)準(zhǔn)ANSIC/ISOC:C語言的相關(guān)語法和語義標(biāo)準(zhǔn),以及一個(gè)標(biāo)準(zhǔn)庫,包括字符類型,錯(cuò)誤碼和標(biāo)準(zhǔn)IO等。POSIX:Portableoperatingsysteminterfaceforcomputingsystems.標(biāo)準(zhǔn)了操作系統(tǒng)的應(yīng)用編程接口,使應(yīng)用程序源代碼移植到多種UNIX操作系統(tǒng)。SVID:是SYSTEMV的標(biāo)準(zhǔn),是POSIX的超集。GNU與GPL/LGPL
GNU:(1983)旨在消除對(duì)計(jì)算機(jī)軟件拷貝、分發(fā)、修改的限制。GNU的目的是開發(fā)一個(gè)自由的類Unix的完整操作系統(tǒng),任何人可自由使用、學(xué)習(xí)、復(fù)制、修改和發(fā)布。到1990年,emacs,gcc,glibc,bash等。GPL:GNUGeneralPublicLicense,通用公共許可證,協(xié)議規(guī)定用戶可自由使用、復(fù)制、修改和發(fā)布自由軟件,協(xié)議要求在對(duì)軟件進(jìn)行修改后,如果要再次發(fā)布,需將已修改的局部同時(shí)發(fā)布出來。許可證協(xié)議LGPL:LesserGeneralPublicLicense,放寬了GPL,允許源代碼以鏈接庫的形式提供給商業(yè)開發(fā)。BSD:BERKEYSOFTWAREDISTRIBUTION,更靈活的開源協(xié)議,但要兩個(gè)條件〔1〕復(fù)制權(quán)必需被保存〔2〕在沒有原作者允許的情況下,軟件不能進(jìn)行商業(yè)應(yīng)用。Linux的誕生1987年荷蘭籍的AndrewTanenbaum開發(fā)出基于PC機(jī)的類UNIX操作系統(tǒng)Minix,采用C和匯編寫成。相關(guān)源碼可以下載。Linux由芬蘭赫爾辛基大學(xué)的LinusTorvalds創(chuàng)立LINUX0.01內(nèi)核。1991年10月,Linux第一個(gè)公開版0.02版發(fā)布1994年3月,Linux1.0版發(fā)布。Linus的標(biāo)志是可愛的企鵝,取自芬蘭的桔祥物L(fēng)inux的開展Linux贏得了大型數(shù)據(jù)庫軟件公司支持。IBM大型機(jī)全面預(yù)裝Linux操作系統(tǒng),HP、SUN公司也將推出自己的桌面發(fā)行版本。全球巨型機(jī)中,有相當(dāng)一局部使用Linux操作系統(tǒng)。Linux版本號(hào)的命名規(guī)那么Linux的內(nèi)核版本由3局部組成主版本號(hào)次版本號(hào)末版本號(hào)主版本號(hào)次版本號(hào)末版本號(hào)發(fā)行版本號(hào)Linux內(nèi)核的兩種版本號(hào)
版本號(hào)的第二位數(shù)字,可以確定Linux內(nèi)核版本的類型開發(fā)版本:第二位數(shù)字是奇數(shù)穩(wěn)定版本:第二位數(shù)字是偶數(shù)奇數(shù)偶數(shù)Linux系統(tǒng)Linux系統(tǒng)由Linux內(nèi)核和一系列GNU庫及程序組成。從內(nèi)向外依次分為:內(nèi)核、運(yùn)行庫\系統(tǒng)程序、shell、實(shí)用工具程序四個(gè)層次,見圖1-2。外層向內(nèi)層提出相關(guān)請(qǐng)求,遞歸調(diào)用到內(nèi)核完成外部硬件管理或計(jì)算命令,然后將結(jié)果逐級(jí)返回到外部調(diào)用程序。Linux系統(tǒng)結(jié)構(gòu)著名的Linux的發(fā)行版本
Linux發(fā)行版特點(diǎn)網(wǎng)址RedHat易用,易維護(hù),專業(yè),應(yīng)用廣泛Debian非商業(yè)組織維護(hù),功能強(qiáng)大Mandrake容易安裝與使用Novell/SuSE歐洲大陸的LinuxUbuntu易于使用,版本更新快/GentooLinux使用了由RHEL提供的源碼資源/Linux系統(tǒng)的商業(yè)運(yùn)營(yíng)模式1.多種產(chǎn)品線2.技術(shù)效勞型3.軟、硬件一體化4.附屬品Shell命令內(nèi)容提要Shell命令概述目錄和文件操作用戶和用戶組管理文件的權(quán)限管理進(jìn)程管理Linux的備份與恢復(fù)Linux應(yīng)用軟件包管理輸入輸出重定向和管道元字符與正那么表達(dá)式Shell命令概述文件的路徑1.用戶主目錄2.當(dāng)前目錄3.絕對(duì)路徑4.相對(duì)路徑目錄的組織結(jié)構(gòu)根目錄:用“/〞表示當(dāng)前目錄:用“.〞表示父目錄:用“..〞表示目錄的組織結(jié)構(gòu)反斜杠的使用規(guī)那么用戶主目錄:登錄到系統(tǒng)后的目錄/home/username絕對(duì)路徑:/usr/src/linux-2.6相對(duì)路徑:../usr/src/linux-2.6目錄的組織結(jié)構(gòu)Linux根文件系統(tǒng)目錄結(jié)構(gòu)目錄名內(nèi)容描述/bin所有用戶可使用的可執(zhí)行文件/sbin系統(tǒng)管理員使用的執(zhí)行文件/boot Linux內(nèi)核映像文件和與引導(dǎo)加載有關(guān)的文件/dev所有設(shè)備文件,包括字符設(shè)備和塊設(shè)備/etc系統(tǒng)配置文件/lib共享庫文件,供/bin和/sbin下的文件使用/mnt掛載點(diǎn),常用于掛載文件系統(tǒng)/proc基于內(nèi)存的文件系統(tǒng),用于顯示內(nèi)核信息。/usr/usr/bin用戶命令工具/usr/includeC頭文件/usr/lib函數(shù)庫/usr/src/源代碼目錄/usr/sbin系統(tǒng)命令工具Linux命令的語法結(jié)構(gòu)$命令名[選項(xiàng)][參數(shù)列表]$為提示符,提示符可通過環(huán)境變量重新設(shè)置命令名代表命令的名稱選項(xiàng)表示用戶對(duì)功能的特定要求,
-f和-zxvf為短選項(xiàng)格式,
--filesize=512為長(zhǎng)選項(xiàng)格式;參數(shù)列表表示要操作的對(duì)象列表,對(duì)象可以是文件、目錄、用戶和用戶組等,對(duì)象的性質(zhì)由命令決定。Shell命令分類1.內(nèi)部命令內(nèi)部命令由Shell實(shí)現(xiàn),具有較高的執(zhí)行效率,運(yùn)行于當(dāng)前進(jìn)程;可通過命令type判斷是否為外部命令。例如:$type-tls#判斷命令ls是否為內(nèi)部命令2.外部命令外部命令是指存儲(chǔ)于文件系統(tǒng)中的可執(zhí)行二進(jìn)制映像文件,Shell通過創(chuàng)立子進(jìn)程,在子進(jìn)程中加載并執(zhí)行外部命令??赏ㄟ^file命令查看外部命令的信息。例如:$filecp#查看外部命令cp的相關(guān)信息$ls-l/home命令提示符命令字命令選項(xiàng)命令組成局部間用空格進(jìn)行分隔命令參數(shù)命令格式舉例使用man命令閱讀手冊(cè)頁$manls使用info命令閱讀信息頁$infols$ls--help獲得命令幫助目錄和文件操作目錄操作命令lspwdcdmkdirrmdir文件操作命令filetouchcprmmvfind文本文件查看命令catmorelessheadtail文件、目錄操作命令命令功能ls顯示指定目錄和文件的信息pwd顯示當(dāng)前目錄名稱cd進(jìn)入指定的目錄mkdir創(chuàng)建指定名稱的目錄rmdir刪除指定名稱的目錄目錄操作命令列目錄$ls$ls-l顯示當(dāng)前目錄名稱$pwd更改當(dāng)前目錄$cd/etc$cd../bin建立和刪除目錄$mkdirmydir$rmdirmydir目錄命令實(shí)例命令功能file顯示指定文件的類型touch建立指定名稱的文件或更新文件時(shí)間cp復(fù)制文件或目錄rm刪除文件或目錄mv移動(dòng)文件或目錄,文件或目錄重命名find在指定目錄查找符合條件的文件文件操作命令檢測(cè)文件類型$file/etc/passwd建立空文件$touchtfile文件查找按文件名進(jìn)行查找$find.-namefile*按文件屬主進(jìn)行查找$find.-userteacher復(fù)制和刪除文件$cpfileafileb$rmfilea文件移動(dòng)與重命名$mvfileafileb$mvfileadira/文件命令實(shí)例命令功能cat顯示文本文件內(nèi)容more分頁顯示文本文件內(nèi)容less分頁顯示文本文件內(nèi)容,并可方便反復(fù)瀏覽head顯示文件首部?jī)?nèi)容tail顯示文件尾部?jī)?nèi)容文本文件查看命令顯示文本$cat/etc/passwd分頁顯示文本$more/etc/passwd分頁文本瀏覽$less/etc/passwd顯示文件首$head-5/etc/passwd顯示文件尾$tail-5/etc/passwd文本查看實(shí)例鏈接文件硬鏈接和軟鏈接硬鏈接:文件系統(tǒng)中的每一個(gè)文件都有它自己的i-結(jié)點(diǎn),每個(gè)i-結(jié)點(diǎn)都保存了一個(gè)文件的屬性和它在硬盤上的位置,當(dāng)兩個(gè)不同的文件名代表同一個(gè)文件的時(shí)候,就可以建立一個(gè)硬鏈接,硬鏈接文件和原始文件具有同樣的i-結(jié)點(diǎn),,每當(dāng)建立一個(gè)硬鏈接,“鏈接計(jì)數(shù)器〞增加一個(gè)值。不同分區(qū)上的兩個(gè)文件之間不能建立硬鏈接,這是因?yàn)橛叉溄邮峭ㄟ^i-結(jié)點(diǎn)向原始文件的,而文件i-結(jié)點(diǎn)在不同的文件系統(tǒng)中可能會(huì)不同。例如:Lnexamole1examole2軟鏈接又叫符號(hào)鏈接,與通過i-結(jié)點(diǎn)指向某個(gè)文件的硬鏈接不一樣,符號(hào)鏈接是通過文件名指向另外一個(gè)文件的.這就允許符號(hào)鏈接指向定位于其他分區(qū),甚至是其他網(wǎng)絡(luò)硬盤的某個(gè)文件.例如:Ln-sexample1example2用戶和用戶組管理在Linux系統(tǒng)中,所有用戶都有一個(gè)唯一的標(biāo)識(shí)UID,從用戶的角度,每個(gè)用戶都有一個(gè)名字,例如:超級(jí)用戶rootLinux系統(tǒng)為了方便用戶使用,在用戶名和UID之間建立一對(duì)一的關(guān)系。用戶和用戶組管理Linux系統(tǒng)將用戶分為超級(jí)用戶、虛擬用戶和普通用戶。超級(jí)用戶:超級(jí)用戶一般用于系統(tǒng)管理,可不加限制地使用系統(tǒng)資源,具有所有權(quán)限,用戶名為root,UID為0。2.虛擬用戶:與超級(jí)用戶不同,虛擬用戶是一種受限用戶,為滿足系統(tǒng)進(jìn)程對(duì)文件資源的訪問控制而建立,虛擬用戶不能用來登錄。例如,bin、daemon、adm和lp等都是虛擬用戶,用戶UID一般為1~499。3.普通用戶:與虛擬用戶一樣,普通用戶也是受限用戶,建立普通用戶的目的是為了讓使用者登錄系統(tǒng),分享Linux系統(tǒng)的軟硬件資源,用戶的UID在500~60000之間。用戶和用戶組管理用戶組是由假設(shè)干相關(guān)用戶構(gòu)成的集合,屬于該組的用戶對(duì)某些文件具有相同的存取權(quán)限一個(gè)用戶組可包含多個(gè)用戶,一個(gè)用戶也可屬于多個(gè)用戶組,在這多個(gè)用戶組中,必須有一個(gè)是主用戶組,其他那么為附加用戶組。創(chuàng)立文件的用戶成為該文件的屬主用戶,該用戶的主用戶組那么成為該文件的屬組,每個(gè)文件的屬主用戶和屬組是唯一的。命令功能adduser添加用戶帳號(hào)passwd設(shè)置(更改)用戶登錄口令userdel刪除用戶帳號(hào)(及宿主目錄)usermod設(shè)置用戶屬性用戶管理命令建立用戶帳號(hào)#adduserst01設(shè)置用戶口令#passwdst01設(shè)置用戶帳號(hào)屬性鎖定用戶帳號(hào)禁止登錄#usermod-Lst01刪除用戶帳號(hào)#userdel-rst01用戶帳號(hào)管理用戶帳號(hào)信息保存在passwd文件中/etc/passwd用戶的加密口令保存在shadow文件中/etc/shadow保存用戶組信息/etc/group用戶username的用戶主目錄/home/username用戶帳號(hào)相關(guān)文件和目錄命令功能groupadd添加指定名稱的用戶組帳號(hào)groupdel刪除指定名稱的用戶組帳號(hào)文件功能/etc/group保存用戶組帳號(hào)信息用戶組管理命令及文件添加用戶組#groupaddclass1在建立用戶時(shí)指定用戶組#adduser-gclass1st03更改用戶的組帳號(hào)#usermod-gclass1st01刪除用戶組#groupdelclass1用戶組帳號(hào)管理文件權(quán)限管理文件權(quán)限管理通過ls命令,并配合-l選項(xiàng)可實(shí)現(xiàn)對(duì)文件屬性的查詢,ls-l如圖2-2所示。其中,第1個(gè)字符用于表示文件類型,第2至10共9個(gè)字符表示文件的操作權(quán)限,連接數(shù)表示文件被引用的次數(shù),用戶名和用戶組名分別代表文件所屬的用戶和組,文件權(quán)限的顯示文件類型前綴類型前綴類型—普通文件l鏈接(link)文件b塊(block)設(shè)備文件p命名管道(pipe)文件c字符(character)設(shè)備文件s本地套接口(socket)d目錄(directory)權(quán)限管理文件三種訪問權(quán)限字符含義八進(jìn)制表示rread:讀,可以顯示該文件的內(nèi)容22=4wwrite:寫,可以編輯或刪除它21=2xexcute:執(zhí)行,如果是程序的話20=1-rwxrw-r-xugo類型一個(gè)文件由1個(gè)類型和9個(gè)權(quán)限位來描述,9個(gè)權(quán)限位分為3組,每組3個(gè)權(quán)限位,具體表示如下所示:u:user,文件的屬主g:group,文件的屬主所在的組,屬組o:other,其他的用戶a:all,以上三種人權(quán)限的定義權(quán)限項(xiàng)讀寫執(zhí)行讀寫執(zhí)行讀寫執(zhí)行字符表示r(w)xx)rwxrwx數(shù)字表示421421421權(quán)限分配文件所有者文件所屬組用戶其他用戶文件與目錄的權(quán)限權(quán)限文件目錄r(讀)查看文件內(nèi)容瀏覽目錄內(nèi)容w(寫)修改文件內(nèi)容在目錄中創(chuàng)建文件或目錄x(執(zhí)行)將文件投入運(yùn)行進(jìn)入目錄擴(kuò)展權(quán)限的定義(1)Set-user-ID位(2)Set-group-ID(3)Sticky位擴(kuò)展權(quán)限的顯示權(quán)限
特殊位的含義-rwSr--r--SUID被設(shè)置,但所屬用戶的執(zhí)行權(quán)沒被設(shè)置-rwsr-xr-xSUID和所屬用戶的執(zhí)行權(quán)被設(shè)置-rw-r-Sr--SGID被設(shè)置,但所屬用戶組的執(zhí)行權(quán)沒被設(shè)置-rwxr-sr-xSGID和所屬用戶組的執(zhí)行權(quán)被設(shè)置drwxrw-r-TSticky位被設(shè)置,但其他用戶的執(zhí)行權(quán)沒被設(shè)置drwxrw-r-tSticky位和其他用戶的執(zhí)行權(quán)被設(shè)置權(quán)限的修改chmod命令語法一語法chmod[ugoa][+-=][rwxst]文件列表語法二chmod八進(jìn)制權(quán)限值文件列表功能更改文件的訪問權(quán)限chmod命令選項(xiàng)選項(xiàng)功能選項(xiàng)功能a所有用戶=賦值權(quán)限u屬主用戶r讀權(quán)限g屬主用戶組w寫權(quán)限o其他用戶x執(zhí)行權(quán)限+添加權(quán)限sSUID位/SGID位-刪除權(quán)限tSticky位實(shí)例分析假設(shè)文件demo的初始權(quán)限為"rwxrwxrwx",$chmoda-xdemo #結(jié)果為rw-rw-rw- $chmodgo-wdemo #結(jié)果為rw-r--r-- $chmodg+wdemo #結(jié)果為rw-rw-r-- $chmoda=demo #結(jié)果為--------- $chmod+tdemo #結(jié)果為--------T $chmodu+sdemo #結(jié)果為--S-----T $chmodu+rxdemo #結(jié)果為r-s-----T $chmodg+rwsdemo #結(jié)果為r-srwS-T $chmodu-sdemo #結(jié)果為r-SrwS-T 實(shí)例分析$chmod666demo #結(jié)果為rw-rw-rw-$chmod644demo #結(jié)果為rw-r--r--$chmod700demo #結(jié)果為rwx------$chmod4666demo #結(jié)果為rwSrw-rw-$chmod1111demo #結(jié)果為--x-x--t權(quán)限掩碼umask是進(jìn)程的一個(gè)屬性,目的是為進(jìn)程創(chuàng)立的文件或目錄定義默認(rèn)權(quán)限,它是進(jìn)程運(yùn)行環(huán)境的一局部。
umask命令語法umasknnn功能修改權(quán)限掩碼。其中,nnn為權(quán)限掩碼的值,取值范圍為0000-0777。權(quán)限掩碼以掩碼值002為例,說明如何根據(jù)umask的值計(jì)算新建文件或目錄的默認(rèn)權(quán)限,002用二進(jìn)制標(biāo)識(shí)為000000010,共9位,前三位用于控制用戶的權(quán)限,中間三位用于控制用戶組的權(quán)限,后三位用于控制其他用戶的權(quán)限這三組中的三位依次代表讀、寫和執(zhí)行三種權(quán)限。假設(shè)掩碼中某位的值為1,那么在創(chuàng)立文件和目錄時(shí),相應(yīng)位的權(quán)限被屏蔽,但除了新建文件各組的執(zhí)行權(quán),也就是說,無論掩碼中執(zhí)行權(quán)的值是否為1,創(chuàng)立文件時(shí),各組都不賦予執(zhí)行權(quán)。進(jìn)程管理進(jìn)程管理程序是保存在磁盤可執(zhí)行映像中的機(jī)器代碼指令和數(shù)據(jù)的集合。進(jìn)程可以被認(rèn)為是執(zhí)行中的計(jì)算機(jī)程序。
Linux是多進(jìn)程操作系統(tǒng),每個(gè)程序啟動(dòng)時(shí),可以創(chuàng)立一個(gè)或幾個(gè)進(jìn)程,與其他程序創(chuàng)立的進(jìn)程共同運(yùn)行在Linux內(nèi)核空間。
會(huì)話概念Linux使用會(huì)話和進(jìn)程組管理多用戶進(jìn)程,當(dāng)用戶在某個(gè)終端上登錄時(shí),系統(tǒng)創(chuàng)立一個(gè)新的會(huì)話,以會(huì)話ID的形式記錄在進(jìn)程中。同一終端上派生的所有進(jìn)程通常具有相同的會(huì)話ID,但不同終端上派生進(jìn)程的會(huì)話ID不同。一個(gè)會(huì)話中有一個(gè)領(lǐng)頭進(jìn)程和終端相連,負(fù)責(zé)從終端上接收輸入。進(jìn)程組概念將完成某種作業(yè)的相關(guān)進(jìn)程定義為進(jìn)程組,以進(jìn)程組ID的形式記錄在進(jìn)程中。同組進(jìn)程的進(jìn)程組ID相同,屬于不同組的進(jìn)程擁有不同的進(jìn)程組ID,一個(gè)進(jìn)程組至少包含一個(gè)進(jìn)程,每個(gè)進(jìn)程組中包含一個(gè)領(lǐng)頭進(jìn)程,領(lǐng)頭進(jìn)程的進(jìn)程ID等于進(jìn)程組ID,一個(gè)終端會(huì)話可包含多個(gè)進(jìn)程組,根據(jù)進(jìn)程運(yùn)行方式的不同,可將進(jìn)程分為前臺(tái)進(jìn)程和后臺(tái)進(jìn)程。作業(yè)概念前臺(tái)進(jìn)程和后臺(tái)進(jìn)程都稱為作業(yè),當(dāng)進(jìn)程在前臺(tái)運(yùn)行時(shí),從鍵盤上按下Ctrl+z,這樣可使前臺(tái)進(jìn)程掛起。因此,作業(yè)有前臺(tái)、后臺(tái)和掛起三種狀態(tài)。Shell可使作業(yè)在這三種狀態(tài)之間遷移??刂平K端概念終端用于系統(tǒng)與用戶間的交互,鍵盤作為終端的輸入,終端顯示器作為終端的輸出。當(dāng)會(huì)話的領(lǐng)頭進(jìn)程翻開一個(gè)終端之后,該終端就成為會(huì)話的控制終端。一個(gè)會(huì)話只能有一個(gè)控制終端,一個(gè)控制終端也只能控制一個(gè)會(huì)話,控制進(jìn)程屬于前臺(tái)進(jìn)程組,后臺(tái)進(jìn)程組不擁有控制終端。見圖2-3會(huì)話、進(jìn)程組和終端的關(guān)系命令功能pstree通過樹形結(jié)構(gòu)顯示進(jìn)程間的繼承關(guān)系ps顯示當(dāng)前系統(tǒng)中進(jìn)程運(yùn)行情況Kill結(jié)束系統(tǒng)進(jìn)程sleep使當(dāng)前進(jìn)程睡眠一段時(shí)間bg前臺(tái)程序調(diào)入后臺(tái)fg后臺(tái)程序調(diào)入前臺(tái)Shutdown/init0關(guān)閉系統(tǒng)進(jìn)程相關(guān)命令pstree命令init─┬─anacron├─apmd├─atd├─bdflush├─crond├─dhclient├─gpm├─kapmd├─keventd├─2*[kjournald]├─klogd├─kscand/DMA├─kscand/HighMem├─kscand/Normal├─ksoftirqd_CPU0├─kswapd├─kupdated├─login───bash───pstree├─mdrecoveryd├─5*[mingetty]├─portmap├─rpc.statd├─2*[sendmail]├─sshd├─syslogd└─xinetdps命令選項(xiàng)含義-a顯示終端上的所有進(jìn)程,包括其他用戶的進(jìn)程-r只顯示正在運(yùn)行的進(jìn)程-x顯示沒有控制終端的進(jìn)程。-u打印用戶格式,顯示用戶名-l長(zhǎng)列表方式-e顯示所有進(jìn)程-f全格式-j按作業(yè)格式輸出語法ps[選項(xiàng)]功能顯示系統(tǒng)中進(jìn)程的狀態(tài)和屬性。ps命令顯示字段定義字段名含義USER進(jìn)程所有者PID進(jìn)程ID%CPUCPU占用率%MEM內(nèi)存占用率VSZ進(jìn)程的內(nèi)存映像所占的空間RSS進(jìn)程運(yùn)行在用戶空間中所占的物理字節(jié)大小TTY進(jìn)程執(zhí)行所在的終端STAT進(jìn)程的狀態(tài)START進(jìn)程開始運(yùn)行時(shí)間TIME進(jìn)程占有CPU的時(shí)間,以分和秒表示COMMAND啟動(dòng)命令的命令行進(jìn)程狀態(tài)的定義狀態(tài)含義S可中斷的睡眠狀態(tài)D不可中斷的睡眠狀態(tài)R正在運(yùn)行Z僵死狀態(tài),進(jìn)程已終止,但進(jìn)程描述符存在T停止?fàn)顟B(tài)進(jìn)程的啟動(dòng)手工啟動(dòng)前臺(tái)啟動(dòng):直接輸入命名啟動(dòng)程序后臺(tái)啟動(dòng):在命令后輸入“&〞操作符 #cpoldfile/backup/newfile&調(diào)度啟動(dòng)at:在指定時(shí)刻執(zhí)行指定的命令序列crontab:周期性執(zhí)行指定程序改變進(jìn)程的運(yùn)行方式把命令程序調(diào)到后臺(tái) 使用bg命令把前臺(tái)程序調(diào)入后臺(tái)把后臺(tái)命令調(diào)回前臺(tái)來
使用fg命令把后臺(tái)進(jìn)程調(diào)入前臺(tái)調(diào)整進(jìn)程的優(yōu)先級(jí)
使用renice命令調(diào)整進(jìn)程優(yōu)先級(jí)終止進(jìn)程
使用kill命令中止進(jìn)程運(yùn)行關(guān)閉系統(tǒng)init0init6shutdown-hnowshutdown+10shutdown-cshutdown-r+10reboot[Ctrl+Alt+Del]Kill命令語法kill[-s信號(hào)代碼]進(jìn)程PID功能根據(jù)PID向進(jìn)程發(fā)送信號(hào),常用于結(jié)束進(jìn)程。Kill命令$kill-l #列出所有信號(hào)$kill-9323 發(fā)送信號(hào)9(KILL)終止pid為323的進(jìn)程#kill-9-1223#殺死進(jìn)程組號(hào)為1223中的所有進(jìn)程$kill-lTERM0#發(fā)送信號(hào)TERM給當(dāng)前進(jìn)程組中的所有進(jìn)程$kill-9-1#發(fā)送信號(hào)KILL給所有進(jìn)程標(biāo)識(shí)大于1的進(jìn)程Linux的備份與恢復(fù)Linux的備份與恢復(fù)備份與恢復(fù)是一對(duì)互逆的數(shù)據(jù)處理技術(shù),分成三個(gè)層次面向文件的備份面向文件系統(tǒng)的備份面向設(shè)備的備份面向文件的備份與恢復(fù)1.歸檔歸檔是將多個(gè)文件或目錄打包為一個(gè)目標(biāo)文件的過程,該目標(biāo)文件稱為歸檔文件。這樣,便于歸檔文件在網(wǎng)絡(luò)上進(jìn)行傳輸,便于對(duì)歸檔文件進(jìn)行管理。2.壓縮壓縮是通過某種算法將一批數(shù)據(jù)以更小體積存儲(chǔ)的一種技術(shù)。有時(shí),為了減少歸檔文件的體積,配合使用壓縮軟件,對(duì)歸檔文件進(jìn)行壓縮。這樣,可減少歸檔文件在文件系統(tǒng)中占用的空間,也提高了傳輸效率。tar命令tar命令語法tar[選項(xiàng)]文件或目錄功能將文件或目錄歸檔至存儲(chǔ)設(shè)備或文件,或?qū)w檔文件恢復(fù)至目錄。tar命令$tar-cf/dev/fd0.#將當(dāng)前目錄下的所有文件歸檔至軟盤$tar-cfbak.tar/home#歸檔目錄/home為bak.tar$tar-czvf/home#將目錄/home歸檔,然后用gzip壓縮$tar-xzvf#先用gzip解壓,然后復(fù)原歸檔文件參見書上29頁gzip命令語法gzip]選項(xiàng)]文件名功能
GNU的壓縮程序。只對(duì)單個(gè)文件進(jìn)行壓縮。$gzipfilename#壓縮后文件名變成filename.gz$gzip-dfilename.gz#解壓縮文件filename.gzbzip2命令語法bzip2[選項(xiàng)]文件名稱功能壓縮與解壓縮工具$bzip2filename壓縮后文件名變?yōu)閒ilename.bz2$bzip2-dfilename.bz2#解壓縮文件ilename.bzLinux應(yīng)用軟件包管理應(yīng)用軟件包的分類RPM〔RedHatPackageManagement〕RPM是由RedHat公司推出的軟件包管理器。RPM軟件包的命名packagename_version_arch.rpm,APT〔AdvancedPackageTool)APT是Debian軟件包管理工具。APT軟件包的命名規(guī)那么與RPM相同,只是后綴名為deb。rpm命令
語法rpm[選項(xiàng)]軟件包名或文件名功能RPM軟件包管理工具,負(fù)責(zé)安裝、升級(jí)、查詢和卸載RPM軟件包。rpm命令選項(xiàng)選項(xiàng)功能選項(xiàng)功能-i安裝軟件包-a查詢所有已安裝的軟件包-q查詢軟件包-h顯示安裝進(jìn)度-e卸載軟件包--v驗(yàn)證軟件包-u升級(jí)軟件包l查詢包中的文件列表-f查詢包含有文件的軟件包i查詢?cè)敿?xì)信息-s顯示包含有文件的軟件包p查詢軟件包文件實(shí)例分析(1)安裝軟件包,顯示安裝進(jìn)度。$rpm-ivh(2)查詢系統(tǒng)中已安裝的軟件包bash的信息。$rpm-qibash(3)查詢指定RPM軟件包文件的信息$rpm-qpl(4)刪除已安裝RPM軟件包vim-enhanced。$rpm-evim-enhanced(5)升級(jí)軟件包軟件包的安裝目錄文件類型安裝目錄普通執(zhí)行程序文件/usr/bin服務(wù)器執(zhí)行程序文件和管理程序文件/usr/sbin應(yīng)用程序配置文件/etc應(yīng)用程序文檔文件/usr/share/doc應(yīng)用程序手冊(cè)頁文件/usr/share/man輸入輸出重定向輸入輸出重定向輸入重定向 將本因從標(biāo)準(zhǔn)輸入設(shè)備接收的數(shù)據(jù)改變?yōu)閺钠渌募休斎氲募夹g(shù),稱為輸入重定向輸出重定向 將本因從標(biāo)準(zhǔn)輸出設(shè)備輸出的數(shù)據(jù)改變輸出至其他文件的技術(shù),稱為輸出重定向每個(gè)由shell創(chuàng)立的Linux進(jìn)程都會(huì)翻開3個(gè)文件用來處理程序的輸入輸出。文件文件描述符默認(rèn)設(shè)備輸入文件:標(biāo)準(zhǔn)輸入0鍵盤輸出文件:標(biāo)準(zhǔn)輸出1屏幕錯(cuò)誤輸出文件:標(biāo)準(zhǔn)錯(cuò)誤輸出2屏幕標(biāo)準(zhǔn)駛?cè)胼敵鲈O(shè)備類別操作符說明輸入重定向<輸入重定向是將命令中接收輸入的途徑由默認(rèn)的鍵盤更改(重定向)為指定的文件輸出重定向>將命令的執(zhí)行結(jié)果重定向輸出到指定的文件中,命令進(jìn)行輸出重定向后執(zhí)行結(jié)果將不顯示在屏幕上>>將命令執(zhí)行的結(jié)果重定向并追加到指定文件的末尾保存錯(cuò)誤重定向2>清空指定文件的內(nèi)容,并保存標(biāo)準(zhǔn)錯(cuò)誤輸出的內(nèi)容到指定文件中2>>向指定文件中追加命令的錯(cuò)誤輸出,而不覆蓋文件中的原有內(nèi)容輸出與錯(cuò)誤組合重定向&>將標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出的內(nèi)容全部重定向到指定文件重定向操作符實(shí)例分析將標(biāo)準(zhǔn)輸出重定向到文件$ls/etc/>etcdir將標(biāo)準(zhǔn)輸出重定向追加到文件$ls/etc/sysconfig/>>etcdir將錯(cuò)誤輸出重定向到文件$nocmd2>errfile將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出重定向到文件$lsafilebfile&>errfile管道pipe管道pipe管道是實(shí)現(xiàn)進(jìn)程間通信的方法之一,它將兩個(gè)進(jìn)程的標(biāo)準(zhǔn)輸入輸出相連接,將一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸出作為另一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸入。根據(jù)使用管道的方法,管道可分為無名管道和命名管道。
無名管道語法命令1|命令2|...[命令n]功能將命令1的標(biāo)準(zhǔn)輸入作為命令2的標(biāo)準(zhǔn)輸入,接著,將命令2的標(biāo)準(zhǔn)輸出作為命令3的標(biāo)準(zhǔn)輸入,依次類推。$catfile|grep‘pipe’|more命名管道命名管道通過在文件系統(tǒng)建立特殊的命名管道文件,用戶通過對(duì)命名管道文件的讀寫,實(shí)現(xiàn)進(jìn)程通信。mkfifo命令語法mkfifo[選項(xiàng)]文件名功能創(chuàng)立命名管道文件命名管道實(shí)例分析$mkfifo-m644myfifo#建立權(quán)限為644的命名管道文件myfifo$mkfifo-mg-w,o-rwfifo#建立命名管道文件fifo$mkfifoa=rwdemofifo#建立命名管道文件demofifo,權(quán)限為666prw-rw-rw-1tomuser0Nov2718:30demofifo$catcore.c>demofifo向命名管道文件中寫入core.c$cat<demofifo#從命名管道文件myfifo中讀取內(nèi)容元字符與正那么表達(dá)式元字符元字符用于表達(dá)某些特定而非自身含義的特殊字符,它定一種匹配字符的模式語言,元字符的定義與語言環(huán)境有關(guān),在不同的Shell版本以及一些文本處理程序中對(duì)元字符的定義不盡相同。通配符元字符含義?匹配任意一個(gè)字符*匹配任意數(shù)量的字符[abc]匹配方括號(hào)中的任意一個(gè)字符[a-z]匹配方括號(hào)中表示字符范圍內(nèi)的任意一個(gè)字符[!a-z]匹配除了方括號(hào)中表示范圍內(nèi)的字符屏蔽元字符的特定含義1.在包含元字符的字符串兩邊加單引號(hào)或雙引號(hào)。2.在元字符前使用反斜杠“\〞。查找文件名為"ab*cd"的文件$ls"ab*cd"查找文件"abc*def"$lsabc\*def正那么表達(dá)式正那么表達(dá)式是一個(gè)字符模板,用在文本處理程序中,用于搜索匹配的字符。這些文本處理程序包括ed,ex,vi,grep,egrep,sed和awk等。grep命令
語法grep[選項(xiàng)]正那么表達(dá)式文本文件列表功能從文本文件中搜索匹配指定正那么表達(dá)式的所有行。grep命令支持的常用元字符元字符匹配字符^行首$行尾\char轉(zhuǎn)義后面的字符[^]不匹配方括號(hào)中的任意字符\<單詞的開始\>單詞的結(jié)尾()or\(\)標(biāo)記后面用到的匹配字符|or\| 分組x\{m\}重復(fù)"x"字符m次x\{m,\}重復(fù)"x"字符至少m次x\{m,n\}重復(fù)"x"字符m次到nn次.所有的單個(gè)字符實(shí)例分析1.在文件textfile中搜索以字符"n"開頭的所有行$grep'^n'textfile2.在文件textfile中搜索以".00"結(jié)尾的所有行$grep'\.00$'textfile3.在文件textfile中搜索包含數(shù)字5,后面緊接字符".",再后面是任意一個(gè)字符的所有行$grep'5\..'textfile4.在文件textfile中搜索以字符"w"和"y"開始的所有行$grep'^[wy]'textfileGNUC開發(fā)環(huán)境內(nèi)容提要GNUC編譯器工程管理工具:GNUmake創(chuàng)立和使用函數(shù)庫GNUC函數(shù)庫:glibc編譯與鏈接過程GNUC編譯器GNUC編譯器GCC概述GCC(GNUCompilerCollection)是GNU下編譯器及其相關(guān)工具的集合。GCC原名為GNUC語言編譯器,因?yàn)樗局荒芴幚鞢語言,隨著GCC的開展,在功能上得到了不斷擴(kuò)展,目前,它具有以下特點(diǎn):(1)支持多種高級(jí)語言(2)支持多種硬件處理器(3)支持多種操作系統(tǒng)平臺(tái)GNUC編譯器gcc命令語法gcc[選項(xiàng)]目標(biāo)文件源文件功能將C語言編譯為目標(biāo)代碼或可執(zhí)行文件。gcc命令選項(xiàng)選項(xiàng)功能描述Wall打印警告信息g添加調(diào)試信息到輸出文件Oo0o1o2優(yōu)化選項(xiàng),若有多個(gè),則最后一個(gè)有效i指定頭文件搜索路徑,若有多個(gè)則從前往后搜索L指定庫搜索路徑,若有多個(gè),則從前往后搜索D給所編譯文件定義一個(gè)宏,其值為1l指定引用的庫,從當(dāng)前位置向后搜索static使用靜態(tài)鏈接shared使用動(dòng)態(tài)鏈接E輸出預(yù)處理后的文件S編譯生成的匯編文件(.s)c編譯生成的目標(biāo)文件(.o)o指定輸出文件名Wl 告訴gcc/g++傳送參數(shù)至linkerfPIC告訴gcc創(chuàng)建地址獨(dú)立的目標(biāo)文件工程管理工具:GNUmake工程管理工具:GNUmake概念當(dāng)開發(fā)規(guī)模較大的軟件,需要編譯和鏈接多個(gè)目標(biāo)文件時(shí),用戶只需將具體的操作步驟按一定的語法規(guī)那么以命令的方式寫入文本文件,一般命名為Makefile,此后,用戶只需在命令提示符下輸入make命令,make工具會(huì)根據(jù)Makefile文件中的定義自動(dòng)執(zhí)行一系列編譯和鏈接工作.當(dāng)某個(gè)文件被修改,make工具只執(zhí)行依賴于該文件的一系列規(guī)那么。Makefile文件的語法結(jié)構(gòu)Makefile文件由一系列規(guī)那么構(gòu)成,每條規(guī)那么的語法結(jié)構(gòu)為:目標(biāo)1目標(biāo)2...目標(biāo)n:依賴文件列表<tab>命令1<tab>命令2......<tab>命令n實(shí)例分析實(shí)例分析#script5-2_makefileappexam:main.oapp.omod.olib.o gcc-oappexammain.oapp.omod.olib.omain.o:main.capp.h gcc-cmain.capp.o:app.capp.h gcc-capp.cmod.o:mod.c gcc-cmod.clib.o:lib.clib.h gcc-clib.cclean: rm-f*.oMakefile中的變量1.自定義變量語法變量名=字符串功能將'字符串'賦給'變量名',在makefile中變量無數(shù)據(jù)類型。引用:$(變量名)2.環(huán)境變量
Make在運(yùn)行過程中,將環(huán)境變量轉(zhuǎn)化為同名同值的make變量,用戶也可在Makefile中對(duì)這些變量進(jìn)行重新定義。Makefile中的變量預(yù)定義變量名含義默認(rèn)值A(chǔ)R歸檔程序arAS匯編器asCCC語言編譯器ccCXXC++編譯器g++CPP帶有標(biāo)準(zhǔn)輸出的C語言預(yù)處理程序$(CC)–ERM刪除文件的命令rm–r3.預(yù)定義變量Makefile中的變量變量功能描述$^所有的依賴文件,以空格分開,以出現(xiàn)的先后為序$<第一個(gè)依賴文件的名稱$?所有的依賴文件,以空格分開,它們的修改日期比目標(biāo)的創(chuàng)建日期晚$*不包含擴(kuò)展名的目標(biāo)文件名稱$@目標(biāo)的完整名稱4.自動(dòng)變量自動(dòng)變量由make工具預(yù)先定義,具有特定的含義,它的值與規(guī)那么中的目標(biāo)和依賴對(duì)象有關(guān)。實(shí)例分析#script5-5_makefileOBJS=main.oapp.omod.olib.oappexam:$(OBJS) $(CC)-o$@$^main.o:main.capp.h $(CC)-c-o$@$<app.o:app.capp.h $(CC)-c-o$@$<mod.o:mod.c $(CC)-c-o$@$<lib.o:lib.clib.h $(CC)-c-o$@$<clean: rm-f*.oMakefile文件中的潛規(guī)那么1.隱含規(guī)那么GNUmake定義了了內(nèi)置的隱含規(guī)那么,在不給出產(chǎn)生目標(biāo)的命令時(shí),由make自動(dòng)添加。例如,demo.o:demo.cmake自動(dòng)添加以下規(guī)那么: $(CC)$(CFLAGS)$(CPPFLAGS)$(TARGET_ARCH)-c$<-o$@Makefile文件中的潛規(guī)那么2.后綴規(guī)那么后綴規(guī)那么定義了將一個(gè)具有某個(gè)后綴的文件(例如,.c文件)轉(zhuǎn)換為具有另外一種后綴的文件(例如,.o文
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙干股協(xié)議書
- 三農(nóng)政策下的鄉(xiāng)村旅游發(fā)展作業(yè)指導(dǎo)書
- 礦業(yè)與資源開發(fā)技術(shù)作業(yè)指導(dǎo)書
- 技術(shù)服務(wù)合同
- 管理咨詢專業(yè)服務(wù)協(xié)議書
- 貸款擔(dān)保書的
- 三農(nóng)村合作社應(yīng)急管理方案
- 小學(xué)三年級(jí)口算題兩三位數(shù)乘除一位數(shù)
- 2025年陽泉資格證模擬考試
- 小學(xué)六年級(jí)數(shù)學(xué)口算競(jìng)賽試題
- 新版中國(guó)食物成分表
- DB11∕T 446-2015 建筑施工測(cè)量技術(shù)規(guī)程
- 運(yùn)輸車輛掛靠協(xié)議書(15篇)
- 完整版:美制螺紋尺寸對(duì)照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- 醫(yī)院醫(yī)療質(zhì)量管理制度完整版
- 粵劇課程設(shè)計(jì)
- 食品感官檢驗(yàn)基礎(chǔ)品評(píng)員的崗前培訓(xùn)課件
- 《財(cái)務(wù)管理學(xué)(第10版)》課件 第5、6章 長(zhǎng)期籌資方式、資本結(jié)構(gòu)決策
- 《網(wǎng)絡(luò)安全防護(hù)項(xiàng)目教程》課件項(xiàng)目1 系統(tǒng)基本安全防護(hù)
- 房屋永久居住權(quán)合同模板
- 2024年度保密教育線上培訓(xùn)考試題庫附答案(完整版)
評(píng)論
0/150
提交評(píng)論