Linux程序設計基礎概述_第1頁
Linux程序設計基礎概述_第2頁
Linux程序設計基礎概述_第3頁
Linux程序設計基礎概述_第4頁
Linux程序設計基礎概述_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Linux程序設計內(nèi)容Linux程序設計根底Shell程序設計Linux文件與內(nèi)存管理Linux進程管理Linux網(wǎng)絡程序設計Linux數(shù)據(jù)庫編程課時及成績評定總共40學時講課28學時實驗12學時平時:50%(考勤+實驗)期末:50%(卷考或機考或大作業(yè))使用教材參考書目鳥哥的Linux私房菜〔兩本:根底篇和應用效勞器篇〕科學出版社Linux應用程序開發(fā)〔第二版〕LinuxapplicationdevelopmentMichaelK.Jonhenson著武延軍郭松柳

LinuxC/C++入門與進階科學出版社第1章Linux程序設計根底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年,由通用電器公司、貝爾實驗室和麻省理工學院的研究人員開發(fā)了一個名為Multics的操作系統(tǒng),使用戶可通過線接入遠程終端,對隨后的操作系統(tǒng),特別是Unix的成功有著巨大的影響。1969-1970年,AT&T的貝爾實驗室研究人員KenTompson和DennisRitchie在Multics根底上用C語言開發(fā)出Unix系統(tǒng)。當時,AT&T公司以低廉的價格甚至免費將Unix源碼授權(quán)給學術(shù)機構(gòu)用于研究和教學。Unix的產(chǎn)生與開展貝爾實驗室AT&T從1983年發(fā)行了第一個商業(yè)版本,名systemⅢ,后來被具有良好商用軟件支持的SystemⅤ所替代。1978年伯克利大學在第六版本的根底上進行了修改,增加了新的功能,發(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)標準ANSIC/ISOC:C語言的相關(guān)語法和語義標準,以及一個標準庫,包括字符類型,錯誤碼和標準IO等。POSIX:Portableoperatingsysteminterfaceforcomputingsystems.標準了操作系統(tǒng)的應用編程接口,使應用程序源代碼移植到多種UNIX操作系統(tǒng)。SVID:是SYSTEMV的標準,是POSIX的超集。GNU與GPL/LGPL

GNU:(1983)旨在消除對計算機軟件拷貝、分發(fā)、修改的限制。GNU的目的是開發(fā)一個自由的類Unix的完整操作系統(tǒng),任何人可自由使用、學習、復制、修改和發(fā)布。到1990年,emacs,gcc,glibc,bash等。GPL:GNUGeneralPublicLicense,通用公共許可證,協(xié)議規(guī)定用戶可自由使用、復制、修改和發(fā)布自由軟件,協(xié)議要求在對軟件進行修改后,如果要再次發(fā)布,需將已修改的局部同時發(fā)布出來。許可證協(xié)議LGPL:LesserGeneralPublicLicense,放寬了GPL,允許源代碼以鏈接庫的形式提供給商業(yè)開發(fā)。BSD:BERKEYSOFTWAREDISTRIBUTION,更靈活的開源協(xié)議,但要兩個條件〔1〕復制權(quán)必需被保存〔2〕在沒有原作者允許的情況下,軟件不能進行商業(yè)應用。Linux的誕生1987年荷蘭籍的AndrewTanenbaum開發(fā)出基于PC機的類UNIX操作系統(tǒng)Minix,采用C和匯編寫成。相關(guān)源碼可以下載。Linux由芬蘭赫爾辛基大學的LinusTorvalds創(chuàng)立LINUX0.01內(nèi)核。1991年10月,Linux第一個公開版0.02版發(fā)布1994年3月,Linux1.0版發(fā)布。Linus的標志是可愛的企鵝,取自芬蘭的桔祥物Linux的開展Linux贏得了大型數(shù)據(jù)庫軟件公司支持。IBM大型機全面預裝Linux操作系統(tǒng),HP、SUN公司也將推出自己的桌面發(fā)行版本。全球巨型機中,有相當一局部使用Linux操作系統(tǒng)。Linux版本號的命名規(guī)那么Linux的內(nèi)核版本由3局部組成主版本號次版本號末版本號主版本號次版本號末版本號發(fā)行版本號Linux內(nèi)核的兩種版本號

版本號的第二位數(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)核、運行庫\系統(tǒng)程序、shell、實用工具程序四個層次,見圖1-2。外層向內(nèi)層提出相關(guān)請求,遞歸調(diào)用到內(nèi)核完成外部硬件管理或計算命令,然后將結(jié)果逐級返回到外部調(diào)用程序。Linux系統(tǒng)結(jié)構(gòu)著名的Linux的發(fā)行版本

Linux發(fā)行版特點網(wǎng)址RedHat易用,易維護,專業(yè),應用廣泛Debian非商業(yè)組織維護,功能強大Mandrake容易安裝與使用Novell/SuSE歐洲大陸的LinuxUbuntu易于使用,版本更新快/GentooLinux使用了由RHEL提供的源碼資源/Linux系統(tǒng)的商業(yè)運營模式1.多種產(chǎn)品線2.技術(shù)效勞型3.軟、硬件一體化4.附屬品Shell命令內(nèi)容提要Shell命令概述目錄和文件操作用戶和用戶組管理文件的權(quán)限管理進程管理Linux的備份與恢復Linux應用軟件包管理輸入輸出重定向和管道元字符與正那么表達式Shell命令概述文件的路徑1.用戶主目錄2.當前目錄3.絕對路徑4.相對路徑目錄的組織結(jié)構(gòu)根目錄:用“/〞表示當前目錄:用“.〞表示父目錄:用“..〞表示目錄的組織結(jié)構(gòu)反斜杠的使用規(guī)那么用戶主目錄:登錄到系統(tǒng)后的目錄/home/username絕對路徑:/usr/src/linux-2.6相對路徑:../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)核映像文件和與引導加載有關(guān)的文件/dev所有設備文件,包括字符設備和塊設備/etc系統(tǒng)配置文件/lib共享庫文件,供/bin和/sbin下的文件使用/mnt掛載點,常用于掛載文件系統(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)$命令名[選項][參數(shù)列表]$為提示符,提示符可通過環(huán)境變量重新設置命令名代表命令的名稱選項表示用戶對功能的特定要求,

-f和-zxvf為短選項格式,

--filesize=512為長選項格式;參數(shù)列表表示要操作的對象列表,對象可以是文件、目錄、用戶和用戶組等,對象的性質(zhì)由命令決定。Shell命令分類1.內(nèi)部命令內(nèi)部命令由Shell實現(xiàn),具有較高的執(zhí)行效率,運行于當前進程;可通過命令type判斷是否為外部命令。例如:$type-tls#判斷命令ls是否為內(nèi)部命令2.外部命令外部命令是指存儲于文件系統(tǒng)中的可執(zhí)行二進制映像文件,Shell通過創(chuàng)立子進程,在子進程中加載并執(zhí)行外部命令。可通過file命令查看外部命令的信息。例如:$filecp#查看外部命令cp的相關(guān)信息$ls-l/home命令提示符命令字命令選項命令組成局部間用空格進行分隔命令參數(shù)命令格式舉例使用man命令閱讀手冊頁$manls使用info命令閱讀信息頁$infols$ls--help獲得命令幫助目錄和文件操作目錄操作命令lspwdcdmkdirrmdir文件操作命令filetouchcprmmvfind文本文件查看命令catmorelessheadtail文件、目錄操作命令命令功能ls顯示指定目錄和文件的信息pwd顯示當前目錄名稱cd進入指定的目錄mkdir創(chuàng)建指定名稱的目錄rmdir刪除指定名稱的目錄目錄操作命令列目錄$ls$ls-l顯示當前目錄名稱$pwd更改當前目錄$cd/etc$cd../bin建立和刪除目錄$mkdirmydir$rmdirmydir目錄命令實例命令功能file顯示指定文件的類型touch建立指定名稱的文件或更新文件時間cp復制文件或目錄rm刪除文件或目錄mv移動文件或目錄,文件或目錄重命名find在指定目錄查找符合條件的文件文件操作命令檢測文件類型$file/etc/passwd建立空文件$touchtfile文件查找按文件名進行查找$find.-namefile*按文件屬主進行查找$find.-userteacher復制和刪除文件$cpfileafileb$rmfilea文件移動與重命名$mvfileafileb$mvfileadira/文件命令實例命令功能cat顯示文本文件內(nèi)容more分頁顯示文本文件內(nèi)容less分頁顯示文本文件內(nèi)容,并可方便反復瀏覽head顯示文件首部內(nèi)容tail顯示文件尾部內(nèi)容文本文件查看命令顯示文本$cat/etc/passwd分頁顯示文本$more/etc/passwd分頁文本瀏覽$less/etc/passwd顯示文件首$head-5/etc/passwd顯示文件尾$tail-5/etc/passwd文本查看實例鏈接文件硬鏈接和軟鏈接硬鏈接:文件系統(tǒng)中的每一個文件都有它自己的i-結(jié)點,每個i-結(jié)點都保存了一個文件的屬性和它在硬盤上的位置,當兩個不同的文件名代表同一個文件的時候,就可以建立一個硬鏈接,硬鏈接文件和原始文件具有同樣的i-結(jié)點,,每當建立一個硬鏈接,“鏈接計數(shù)器〞增加一個值。不同分區(qū)上的兩個文件之間不能建立硬鏈接,這是因為硬鏈接是通過i-結(jié)點向原始文件的,而文件i-結(jié)點在不同的文件系統(tǒng)中可能會不同。例如:Lnexamole1examole2軟鏈接又叫符號鏈接,與通過i-結(jié)點指向某個文件的硬鏈接不一樣,符號鏈接是通過文件名指向另外一個文件的.這就允許符號鏈接指向定位于其他分區(qū),甚至是其他網(wǎng)絡硬盤的某個文件.例如:Ln-sexample1example2用戶和用戶組管理在Linux系統(tǒng)中,所有用戶都有一個唯一的標識UID,從用戶的角度,每個用戶都有一個名字,例如:超級用戶rootLinux系統(tǒng)為了方便用戶使用,在用戶名和UID之間建立一對一的關(guān)系。用戶和用戶組管理Linux系統(tǒng)將用戶分為超級用戶、虛擬用戶和普通用戶。超級用戶:超級用戶一般用于系統(tǒng)管理,可不加限制地使用系統(tǒng)資源,具有所有權(quán)限,用戶名為root,UID為0。2.虛擬用戶:與超級用戶不同,虛擬用戶是一種受限用戶,為滿足系統(tǒng)進程對文件資源的訪問控制而建立,虛擬用戶不能用來登錄。例如,bin、daemon、adm和lp等都是虛擬用戶,用戶UID一般為1~499。3.普通用戶:與虛擬用戶一樣,普通用戶也是受限用戶,建立普通用戶的目的是為了讓使用者登錄系統(tǒng),分享Linux系統(tǒng)的軟硬件資源,用戶的UID在500~60000之間。用戶和用戶組管理用戶組是由假設干相關(guān)用戶構(gòu)成的集合,屬于該組的用戶對某些文件具有相同的存取權(quán)限一個用戶組可包含多個用戶,一個用戶也可屬于多個用戶組,在這多個用戶組中,必須有一個是主用戶組,其他那么為附加用戶組。創(chuàng)立文件的用戶成為該文件的屬主用戶,該用戶的主用戶組那么成為該文件的屬組,每個文件的屬主用戶和屬組是唯一的。命令功能adduser添加用戶帳號passwd設置(更改)用戶登錄口令userdel刪除用戶帳號(及宿主目錄)usermod設置用戶屬性用戶管理命令建立用戶帳號#adduserst01設置用戶口令#passwdst01設置用戶帳號屬性鎖定用戶帳號禁止登錄#usermod-Lst01刪除用戶帳號#userdel-rst01用戶帳號管理用戶帳號信息保存在passwd文件中/etc/passwd用戶的加密口令保存在shadow文件中/etc/shadow保存用戶組信息/etc/group用戶username的用戶主目錄/home/username用戶帳號相關(guān)文件和目錄命令功能groupadd添加指定名稱的用戶組帳號groupdel刪除指定名稱的用戶組帳號文件功能/etc/group保存用戶組帳號信息用戶組管理命令及文件添加用戶組#groupaddclass1在建立用戶時指定用戶組#adduser-gclass1st03更改用戶的組帳號#usermod-gclass1st01刪除用戶組#groupdelclass1用戶組帳號管理文件權(quán)限管理文件權(quán)限管理通過ls命令,并配合-l選項可實現(xiàn)對文件屬性的查詢,ls-l如圖2-2所示。其中,第1個字符用于表示文件類型,第2至10共9個字符表示文件的操作權(quán)限,連接數(shù)表示文件被引用的次數(shù),用戶名和用戶組名分別代表文件所屬的用戶和組,文件權(quán)限的顯示文件類型前綴類型前綴類型—普通文件l鏈接(link)文件b塊(block)設備文件p命名管道(pipe)文件c字符(character)設備文件s本地套接口(socket)d目錄(directory)權(quán)限管理文件三種訪問權(quán)限字符含義八進制表示rread:讀,可以顯示該文件的內(nèi)容22=4wwrite:寫,可以編輯或刪除它21=2xexcute:執(zhí)行,如果是程序的話20=1-rwxrw-r-xugo類型一個文件由1個類型和9個權(quán)限位來描述,9個權(quán)限位分為3組,每組3個權(quán)限位,具體表示如下所示:u:user,文件的屬主g:group,文件的屬主所在的組,屬組o:other,其他的用戶a:all,以上三種人權(quán)限的定義權(quán)限項讀寫執(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í)行)將文件投入運行進入目錄擴展權(quán)限的定義(1)Set-user-ID位(2)Set-group-ID(3)Sticky位擴展權(quán)限的顯示權(quán)限

特殊位的含義-rwSr--r--SUID被設置,但所屬用戶的執(zhí)行權(quán)沒被設置-rwsr-xr-xSUID和所屬用戶的執(zhí)行權(quán)被設置-rw-r-Sr--SGID被設置,但所屬用戶組的執(zhí)行權(quán)沒被設置-rwxr-sr-xSGID和所屬用戶組的執(zhí)行權(quán)被設置drwxrw-r-TSticky位被設置,但其他用戶的執(zhí)行權(quán)沒被設置drwxrw-r-tSticky位和其他用戶的執(zhí)行權(quán)被設置權(quán)限的修改chmod命令語法一語法chmod[ugoa][+-=][rwxst]文件列表語法二chmod八進制權(quán)限值文件列表功能更改文件的訪問權(quán)限chmod命令選項選項功能選項功能a所有用戶=賦值權(quán)限u屬主用戶r讀權(quán)限g屬主用戶組w寫權(quán)限o其他用戶x執(zhí)行權(quán)限+添加權(quán)限sSUID位/SGID位-刪除權(quán)限tSticky位實例分析假設文件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 實例分析$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是進程的一個屬性,目的是為進程創(chuàng)立的文件或目錄定義默認權(quán)限,它是進程運行環(huán)境的一局部。

umask命令語法umasknnn功能修改權(quán)限掩碼。其中,nnn為權(quán)限掩碼的值,取值范圍為0000-0777。權(quán)限掩碼以掩碼值002為例,說明如何根據(jù)umask的值計算新建文件或目錄的默認權(quán)限,002用二進制標識為000000010,共9位,前三位用于控制用戶的權(quán)限,中間三位用于控制用戶組的權(quán)限,后三位用于控制其他用戶的權(quán)限這三組中的三位依次代表讀、寫和執(zhí)行三種權(quán)限。假設掩碼中某位的值為1,那么在創(chuàng)立文件和目錄時,相應位的權(quán)限被屏蔽,但除了新建文件各組的執(zhí)行權(quán),也就是說,無論掩碼中執(zhí)行權(quán)的值是否為1,創(chuàng)立文件時,各組都不賦予執(zhí)行權(quán)。進程管理進程管理程序是保存在磁盤可執(zhí)行映像中的機器代碼指令和數(shù)據(jù)的集合。進程可以被認為是執(zhí)行中的計算機程序。

Linux是多進程操作系統(tǒng),每個程序啟動時,可以創(chuàng)立一個或幾個進程,與其他程序創(chuàng)立的進程共同運行在Linux內(nèi)核空間。

會話概念Linux使用會話和進程組管理多用戶進程,當用戶在某個終端上登錄時,系統(tǒng)創(chuàng)立一個新的會話,以會話ID的形式記錄在進程中。同一終端上派生的所有進程通常具有相同的會話ID,但不同終端上派生進程的會話ID不同。一個會話中有一個領(lǐng)頭進程和終端相連,負責從終端上接收輸入。進程組概念將完成某種作業(yè)的相關(guān)進程定義為進程組,以進程組ID的形式記錄在進程中。同組進程的進程組ID相同,屬于不同組的進程擁有不同的進程組ID,一個進程組至少包含一個進程,每個進程組中包含一個領(lǐng)頭進程,領(lǐng)頭進程的進程ID等于進程組ID,一個終端會話可包含多個進程組,根據(jù)進程運行方式的不同,可將進程分為前臺進程和后臺進程。作業(yè)概念前臺進程和后臺進程都稱為作業(yè),當進程在前臺運行時,從鍵盤上按下Ctrl+z,這樣可使前臺進程掛起。因此,作業(yè)有前臺、后臺和掛起三種狀態(tài)。Shell可使作業(yè)在這三種狀態(tài)之間遷移??刂平K端概念終端用于系統(tǒng)與用戶間的交互,鍵盤作為終端的輸入,終端顯示器作為終端的輸出。當會話的領(lǐng)頭進程翻開一個終端之后,該終端就成為會話的控制終端。一個會話只能有一個控制終端,一個控制終端也只能控制一個會話,控制進程屬于前臺進程組,后臺進程組不擁有控制終端。見圖2-3會話、進程組和終端的關(guān)系命令功能pstree通過樹形結(jié)構(gòu)顯示進程間的繼承關(guān)系ps顯示當前系統(tǒng)中進程運行情況Kill結(jié)束系統(tǒng)進程sleep使當前進程睡眠一段時間bg前臺程序調(diào)入后臺fg后臺程序調(diào)入前臺Shutdown/init0關(guān)閉系統(tǒng)進程相關(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命令選項含義-a顯示終端上的所有進程,包括其他用戶的進程-r只顯示正在運行的進程-x顯示沒有控制終端的進程。-u打印用戶格式,顯示用戶名-l長列表方式-e顯示所有進程-f全格式-j按作業(yè)格式輸出語法ps[選項]功能顯示系統(tǒng)中進程的狀態(tài)和屬性。ps命令顯示字段定義字段名含義USER進程所有者PID進程ID%CPUCPU占用率%MEM內(nèi)存占用率VSZ進程的內(nèi)存映像所占的空間RSS進程運行在用戶空間中所占的物理字節(jié)大小TTY進程執(zhí)行所在的終端STAT進程的狀態(tài)START進程開始運行時間TIME進程占有CPU的時間,以分和秒表示COMMAND啟動命令的命令行進程狀態(tài)的定義狀態(tài)含義S可中斷的睡眠狀態(tài)D不可中斷的睡眠狀態(tài)R正在運行Z僵死狀態(tài),進程已終止,但進程描述符存在T停止狀態(tài)進程的啟動手工啟動前臺啟動:直接輸入命名啟動程序后臺啟動:在命令后輸入“&〞操作符 #cpoldfile/backup/newfile&調(diào)度啟動at:在指定時刻執(zhí)行指定的命令序列crontab:周期性執(zhí)行指定程序改變進程的運行方式把命令程序調(diào)到后臺 使用bg命令把前臺程序調(diào)入后臺把后臺命令調(diào)回前臺來

使用fg命令把后臺進程調(diào)入前臺調(diào)整進程的優(yōu)先級

使用renice命令調(diào)整進程優(yōu)先級終止進程

使用kill命令中止進程運行關(guān)閉系統(tǒng)init0init6shutdown-hnowshutdown+10shutdown-cshutdown-r+10reboot[Ctrl+Alt+Del]Kill命令語法kill[-s信號代碼]進程PID功能根據(jù)PID向進程發(fā)送信號,常用于結(jié)束進程。Kill命令$kill-l #列出所有信號$kill-9323 發(fā)送信號9(KILL)終止pid為323的進程#kill-9-1223#殺死進程組號為1223中的所有進程$kill-lTERM0#發(fā)送信號TERM給當前進程組中的所有進程$kill-9-1#發(fā)送信號KILL給所有進程標識大于1的進程Linux的備份與恢復Linux的備份與恢復備份與恢復是一對互逆的數(shù)據(jù)處理技術(shù),分成三個層次面向文件的備份面向文件系統(tǒng)的備份面向設備的備份面向文件的備份與恢復1.歸檔歸檔是將多個文件或目錄打包為一個目標文件的過程,該目標文件稱為歸檔文件。這樣,便于歸檔文件在網(wǎng)絡上進行傳輸,便于對歸檔文件進行管理。2.壓縮壓縮是通過某種算法將一批數(shù)據(jù)以更小體積存儲的一種技術(shù)。有時,為了減少歸檔文件的體積,配合使用壓縮軟件,對歸檔文件進行壓縮。這樣,可減少歸檔文件在文件系統(tǒng)中占用的空間,也提高了傳輸效率。tar命令tar命令語法tar[選項]文件或目錄功能將文件或目錄歸檔至存儲設備或文件,或?qū)w檔文件恢復至目錄。tar命令$tar-cf/dev/fd0.#將當前目錄下的所有文件歸檔至軟盤$tar-cfbak.tar/home#歸檔目錄/home為bak.tar$tar-czvf/home#將目錄/home歸檔,然后用gzip壓縮$tar-xzvf#先用gzip解壓,然后復原歸檔文件參見書上29頁gzip命令語法gzip]選項]文件名功能

GNU的壓縮程序。只對單個文件進行壓縮。$gzipfilename#壓縮后文件名變成filename.gz$gzip-dfilename.gz#解壓縮文件filename.gzbzip2命令語法bzip2[選項]文件名稱功能壓縮與解壓縮工具$bzip2filename壓縮后文件名變?yōu)閒ilename.bz2$bzip2-dfilename.bz2#解壓縮文件ilename.bzLinux應用軟件包管理應用軟件包的分類RPM〔RedHatPackageManagement〕RPM是由RedHat公司推出的軟件包管理器。RPM軟件包的命名packagename_version_arch.rpm,APT〔AdvancedPackageTool)APT是Debian軟件包管理工具。APT軟件包的命名規(guī)那么與RPM相同,只是后綴名為deb。rpm命令

語法rpm[選項]軟件包名或文件名功能RPM軟件包管理工具,負責安裝、升級、查詢和卸載RPM軟件包。rpm命令選項選項功能選項功能-i安裝軟件包-a查詢所有已安裝的軟件包-q查詢軟件包-h顯示安裝進度-e卸載軟件包--v驗證軟件包-u升級軟件包l查詢包中的文件列表-f查詢包含有文件的軟件包i查詢詳細信息-s顯示包含有文件的軟件包p查詢軟件包文件實例分析(1)安裝軟件包,顯示安裝進度。$rpm-ivh(2)查詢系統(tǒng)中已安裝的軟件包bash的信息。$rpm-qibash(3)查詢指定RPM軟件包文件的信息$rpm-qpl(4)刪除已安裝RPM軟件包vim-enhanced。$rpm-evim-enhanced(5)升級軟件包軟件包的安裝目錄文件類型安裝目錄普通執(zhí)行程序文件/usr/bin服務器執(zhí)行程序文件和管理程序文件/usr/sbin應用程序配置文件/etc應用程序文檔文件/usr/share/doc應用程序手冊頁文件/usr/share/man輸入輸出重定向輸入輸出重定向輸入重定向 將本因從標準輸入設備接收的數(shù)據(jù)改變?yōu)閺钠渌募休斎氲募夹g(shù),稱為輸入重定向輸出重定向 將本因從標準輸出設備輸出的數(shù)據(jù)改變輸出至其他文件的技術(shù),稱為輸出重定向每個由shell創(chuàng)立的Linux進程都會翻開3個文件用來處理程序的輸入輸出。文件文件描述符默認設備輸入文件:標準輸入0鍵盤輸出文件:標準輸出1屏幕錯誤輸出文件:標準錯誤輸出2屏幕標準駛?cè)胼敵鲈O備類別操作符說明輸入重定向<輸入重定向是將命令中接收輸入的途徑由默認的鍵盤更改(重定向)為指定的文件輸出重定向>將命令的執(zhí)行結(jié)果重定向輸出到指定的文件中,命令進行輸出重定向后執(zhí)行結(jié)果將不顯示在屏幕上>>將命令執(zhí)行的結(jié)果重定向并追加到指定文件的末尾保存錯誤重定向2>清空指定文件的內(nèi)容,并保存標準錯誤輸出的內(nèi)容到指定文件中2>>向指定文件中追加命令的錯誤輸出,而不覆蓋文件中的原有內(nèi)容輸出與錯誤組合重定向&>將標準輸出與錯誤輸出的內(nèi)容全部重定向到指定文件重定向操作符實例分析將標準輸出重定向到文件$ls/etc/>etcdir將標準輸出重定向追加到文件$ls/etc/sysconfig/>>etcdir將錯誤輸出重定向到文件$nocmd2>errfile將標準輸出和錯誤輸出重定向到文件$lsafilebfile&>errfile管道pipe管道pipe管道是實現(xiàn)進程間通信的方法之一,它將兩個進程的標準輸入輸出相連接,將一個進程的標準輸出作為另一個進程的標準輸入。根據(jù)使用管道的方法,管道可分為無名管道和命名管道。

無名管道語法命令1|命令2|...[命令n]功能將命令1的標準輸入作為命令2的標準輸入,接著,將命令2的標準輸出作為命令3的標準輸入,依次類推。$catfile|grep‘pipe’|more命名管道命名管道通過在文件系統(tǒng)建立特殊的命名管道文件,用戶通過對命名管道文件的讀寫,實現(xiàn)進程通信。mkfifo命令語法mkfifo[選項]文件名功能創(chuàng)立命名管道文件命名管道實例分析$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)容元字符與正那么表達式元字符元字符用于表達某些特定而非自身含義的特殊字符,它定一種匹配字符的模式語言,元字符的定義與語言環(huán)境有關(guān),在不同的Shell版本以及一些文本處理程序中對元字符的定義不盡相同。通配符元字符含義?匹配任意一個字符*匹配任意數(shù)量的字符[abc]匹配方括號中的任意一個字符[a-z]匹配方括號中表示字符范圍內(nèi)的任意一個字符[!a-z]匹配除了方括號中表示范圍內(nèi)的字符屏蔽元字符的特定含義1.在包含元字符的字符串兩邊加單引號或雙引號。2.在元字符前使用反斜杠“\〞。查找文件名為"ab*cd"的文件$ls"ab*cd"查找文件"abc*def"$lsabc\*def正那么表達式正那么表達式是一個字符模板,用在文本處理程序中,用于搜索匹配的字符。這些文本處理程序包括ed,ex,vi,grep,egrep,sed和awk等。grep命令

語法grep[選項]正那么表達式文本文件列表功能從文本文件中搜索匹配指定正那么表達式的所有行。grep命令支持的常用元字符元字符匹配字符^行首$行尾\char轉(zhuǎn)義后面的字符[^]不匹配方括號中的任意字符\<單詞的開始\>單詞的結(jié)尾()or\(\)標記后面用到的匹配字符|or\| 分組x\{m\}重復"x"字符m次x\{m,\}重復"x"字符至少m次x\{m,n\}重復"x"字符m次到nn次.所有的單個字符實例分析1.在文件textfile中搜索以字符"n"開頭的所有行$grep'^n'textfile2.在文件textfile中搜索以".00"結(jié)尾的所有行$grep'\.00$'textfile3.在文件textfile中搜索包含數(shù)字5,后面緊接字符".",再后面是任意一個字符的所有行$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語言編譯器,因為它原本只能處理C語言,隨著GCC的開展,在功能上得到了不斷擴展,目前,它具有以下特點:(1)支持多種高級語言(2)支持多種硬件處理器(3)支持多種操作系統(tǒng)平臺GNUC編譯器gcc命令語法gcc[選項]目標文件源文件功能將C語言編譯為目標代碼或可執(zhí)行文件。gcc命令選項選項功能描述Wall打印警告信息g添加調(diào)試信息到輸出文件Oo0o1o2優(yōu)化選項,若有多個,則最后一個有效i指定頭文件搜索路徑,若有多個則從前往后搜索L指定庫搜索路徑,若有多個,則從前往后搜索D給所編譯文件定義一個宏,其值為1l指定引用的庫,從當前位置向后搜索static使用靜態(tài)鏈接shared使用動態(tài)鏈接E輸出預處理后的文件S編譯生成的匯編文件(.s)c編譯生成的目標文件(.o)o指定輸出文件名Wl 告訴gcc/g++傳送參數(shù)至linkerfPIC告訴gcc創(chuàng)建地址獨立的目標文件工程管理工具:GNUmake工程管理工具:GNUmake概念當開發(fā)規(guī)模較大的軟件,需要編譯和鏈接多個目標文件時,用戶只需將具體的操作步驟按一定的語法規(guī)那么以命令的方式寫入文本文件,一般命名為Makefile,此后,用戶只需在命令提示符下輸入make命令,make工具會根據(jù)Makefile文件中的定義自動執(zhí)行一系列編譯和鏈接工作.當某個文件被修改,make工具只執(zhí)行依賴于該文件的一系列規(guī)那么。Makefile文件的語法結(jié)構(gòu)Makefile文件由一系列規(guī)那么構(gòu)成,每條規(guī)那么的語法結(jié)構(gòu)為:目標1目標2...目標n:依賴文件列表<tab>命令1<tab>命令2......<tab>命令n實例分析實例分析#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在運行過程中,將環(huán)境變量轉(zhuǎn)化為同名同值的make變量,用戶也可在Makefile中對這些變量進行重新定義。Makefile中的變量預定義變量名含義默認值AR歸檔程序arAS匯編器asCCC語言編譯器ccCXXC++編譯器g++CPP帶有標準輸出的C語言預處理程序$(CC)–ERM刪除文件的命令rm–r3.預定義變量Makefile中的變量變量功能描述$^所有的依賴文件,以空格分開,以出現(xiàn)的先后為序$<第一個依賴文件的名稱$?所有的依賴文件,以空格分開,它們的修改日期比目標的創(chuàng)建日期晚$*不包含擴展名的目標文件名稱$@目標的完整名稱4.自動變量自動變量由make工具預先定義,具有特定的含義,它的值與規(guī)那么中的目標和依賴對象有關(guān)。實例分析#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)生目標的命令時,由make自動添加。例如,demo.o:demo.cmake自動添加以下規(guī)那么: $(CC)$(CFLAGS)$(CPPFLAGS)$(TARGET_ARCH)-c$<-o$@Makefile文件中的潛規(guī)那么2.后綴規(guī)那么后綴規(guī)那么定義了將一個具有某個后綴的文件(例如,.c文件)轉(zhuǎn)換為具有另外一種后綴的文件(例如,.o文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論