




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗1 Linux操作系統(tǒng)簡介及基本使用Linux概述Linux是一個多任務、多用戶的操作系統(tǒng)。在Linux系統(tǒng)中同時可以有多個用戶使用同一臺計算機,運行多個不同的應用。這與平時使用的Windows操作系統(tǒng)是不同的。學生平時使用的幾乎都單用戶獨占系統(tǒng)(因此不用登錄)。在Linux系統(tǒng)上,用戶為了使系統(tǒng)能夠識別自己,必須進行登錄。登錄分為兩步:輸入用戶的登錄名,系統(tǒng)將根據(jù)該登錄名來識別用戶;輸入用戶的口令,該口令是用戶自己選擇的一個字符串、對其他用戶是保密的、在登錄時系統(tǒng)用來辨別真假用戶的關鍵字。系統(tǒng)認為只有用戶自己和用戶授權的人知道這個口令,所以只允許正確口令的用戶登錄,其他用戶則不能登錄到這
2、個帳戶下。在一般情況下,系統(tǒng)管理員會在為用戶建立帳戶時賦給用戶一個用戶名和一個初始的口令。另外,每個Linux系統(tǒng)都被賦予一個主機名(hostname)。這個主機名是賦給計算機的名字(標識)。主機名用來在網(wǎng)絡上識別獨立的計算機。登錄我們對系統(tǒng)的使用都是從登錄開始的。首先要求使用者必須擁有一個合法的個人賬號,只有系統(tǒng)認可了的賬號,才會獲得系統(tǒng)的使用權。系統(tǒng)有兩種用戶:超級用戶root和一般用戶。超級用戶root,對系統(tǒng)的一切擁有完全的控制權限。通常用root賬號進行系統(tǒng)管理及維護,包括建立新的用戶賬號,啟動、關閉、后備及恢復系統(tǒng)等。 因為root的權限不受限制,一旦誤操作可能會導致不可預料的后果
3、,所以在以root身份登錄時,必須格外小心,并且只有在必須時才用root登錄。如果是系統(tǒng)管理員或者獨自擁有這臺機器,就可以用超級用戶登錄。啟動putty后,可看見屏幕有如下顯示: login:選擇登錄的用戶不同權限也不一樣,其中“系統(tǒng)管理員”擁有最高權限。在靠近login處使用小寫字母鍵入你的用戶名student,然后按RETURN鍵,可看見屏幕有如下 顯示: password:在靠近password處使用小寫字母鍵入你的口令student,然后按RETURN鍵。如果系統(tǒng)審核輸入的口令正確,則顯示: Welcome to LINUX System V. $其中顯示shell提示符為$,表示完成
4、注冊進程。在某些Linux系統(tǒng)中,shell提示符為百分號%。 特別的,系統(tǒng)管理員的shell提示符為#。shell提示符是注冊序列的結束,當用戶看到shell提示符時,說明你已成功地在你的Linux系統(tǒng)中注冊,進入系統(tǒng)后,就可以執(zhí)行各種任務了。 如果密碼輸入錯誤,將出現(xiàn)如下提示: Login incorrect稍后,又會出現(xiàn)“l(fā)ogin:”,要求重新輸入用戶名。注意,這里輸入的密碼并不在屏幕上回顯,這樣獨特的設計同樣是為了安全的需要,以免旁邊的人輕易地看到密碼。正像在Windows中輸入密碼使用 “*”顯示一樣,它有效地保護了密碼,維護了系統(tǒng)的安全性。一旦注冊進入系統(tǒng)后, 可以用passwd
5、命令來修改密碼。 這時系統(tǒng)會詢問當前的密碼, 然后是新密碼: zhangLinux zhang passwd Changing password for zhang (current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully 說明:我們使用的用戶名和口令會由系統(tǒng)管理員進行統(tǒng)一設置。Shell外殼這shell是LINUX與用戶的交互接口,它是用戶輸入的鍵盤命令的解釋程序(翻譯器)和程序語言工具。shell解釋
6、程序執(zhí)行的命令也稱shell命令,所有shell命令之集合稱作shell語言。退出系統(tǒng)當用戶要終止他的LINUX對話時,必須注銷,相應于shell提示符,請按Ctrl-D(D),或者鍵入logout/exit。當用戶執(zhí)行完各種操作后,就要及時退出系統(tǒng),這是一個良好的習慣,即使是暫時離開機器也同樣如此。在用戶注銷后,LINUX可能會顯示login:信息的內容.屏幕會有如下顯示: $ login:如果你按RETURN鍵時LINUX不顯示shell提示符,那么表示已注銷成功;如果LINUX 仍顯示你的shell提示符,那么表示你未注銷,則請重復注銷進程。關機或重啟關機或重新啟動機器只有系統(tǒng)管理員才可
7、以做。l 當做完所有的工作后,我們就要關閉系統(tǒng)了,這時切不可直接關掉電源,一定要首先執(zhí)行關閉系統(tǒng)命令。此命令的執(zhí)行要在超級用戶下執(zhí)行,關閉系統(tǒng)命令是halt。 l shutdown命令可以關閉所有程序,依照用戶的需要,重新啟動或關機。 參數(shù)說明如下: 立即關機:h 參數(shù)讓系統(tǒng)立即關機。范例如下: rootlocalhost root#shutdown h now 要求系統(tǒng)立即關機指定關機時間:time參數(shù)可指定關機的時間;或設置多久時間后運行shutdown命令,范例如下: rootlocalhost root#shutdown now 立刻關機 rootlocalhost root#shut
8、down +5 5分鐘后關機 rootlocalhost root#shutdown 10:30 在10:30時關機 關機后自動重啟:r 參數(shù)設置關機后重新啟動。范例如下: rootlocalhost root#shutdown -r now 立刻關閉系統(tǒng)并重啟 rootlocalhost root#shutdown -r 23:59 指定在23:59時重啟動 l 重新啟動計算機的reboot命令 顧名思義,reboot命令是用來重新啟動系統(tǒng)的。有時在對系統(tǒng)的某一配置做了修改以后,或者安裝了新的軟件,需要重新啟動才能使所做的修改生效,這時就要用到重新啟動命令reboot,它需要超級用戶的權限。
9、常用的參數(shù)如下: -f 參數(shù):不依正常的程序運行關機,直接關閉系統(tǒng)并重新啟動計算機。 -I 參數(shù):在在重新啟動之前關閉所有網(wǎng)絡接口。 雖然reboot命令有參數(shù)可以使用,但是一般只需要單獨運行reboot命令就可以了。還有一種重新啟動的方法是不需要先進入超級用戶,在login狀態(tài)下,同時按下Ctrl+Alt+Del鍵,系統(tǒng)同樣可以重新啟動,這就是所說的熱啟動。指令簡介 指令格式指令名稱 選擇項 參數(shù)同一行中可以輸入一個以上的指令,只要指令間以分號(;)隔開,Linux將會按次序執(zhí)行命令序列。 指令選擇項為了執(zhí)行動作產(chǎn)生不同的結果;選擇項以(-)號開頭; 指令參數(shù)參數(shù)的目的是描述指令所需的一些信
10、息(例如:文件名稱),而這些信息在每次執(zhí)行該指令時都不相同。 通配符“*”:可用來代表文件名中的任意長度的字符串;“?”:可用來代表文件名中的任一字符;“”:可用來代表文件名中的任一屬于字符組中的字符。以下這些命令均為shell命令?;久?.man 顯示聯(lián)機Linux手冊 格式 $ man option chapter title. 描述 man命令打印你所指定的命令。在你的LINUX系統(tǒng)中,也許有LINUX系統(tǒng)V用戶 手冊或Linux程序員手冊。在較小的Linux系統(tǒng)中,也許沒有man命令,因為聯(lián)機手冊需要相當大的磁盤空間。 舉例 你可使用命令man who查看who命令的手冊描述。 2
11、. ls 顯示當前工作目錄下內容格式 $ ls ltr 描述 ls(list)命令是非常有用的命令,根據(jù)文件名按字母順序顯示當前目錄中的文件和子目錄列表。配合參數(shù)的使用,能以不同的方式顯示目錄內容。 選擇項 ls命令有多個選擇項,下面列出幾個重要的選擇項:l 以長格式列出文件,其中包括文件中的字符個數(shù),以及最近修改的日期和時間。t 以最近修改的時間順序列出文件。 r 將t選擇的列表順序變反。 a 顯示隱藏文件。當運行l(wèi)s命令時,并不會顯示名稱以“.”開頭的文件。因此可加上“-a”參數(shù)指定要列出這些文件。舉例 以修改時間的順序列文件,輸入命令ls ltrCR。Linux文件的類型:“-”為正文文
12、件普通文件;“d”為目錄文件;“b”為塊設備文件;“c”為字符設備文件;“l(fā)”為鏈接文件;“p”為管道文件;3. cd 切換工作目錄-在目錄樹中移動 格式 $ cd 路徑 描述 cd(change directory)命令切換到指定的目錄,并把它作為工作目錄。 它有三種格式: cd 返回用戶主目錄,并把它作為工作目錄。 cd 目錄名稱 改變現(xiàn)行目錄到指定目錄。 cd . 返回到工作目錄的父目錄,并把它作為工作目錄。cd / 進到根目錄4. mkdir 在當前工作目錄下建立子目錄 格式 $ mkdir 目錄名稱 描述 mkdir(make directory)命令建立1個或多個指定目錄。5. r
13、mdir 刪除當前工作目錄下子目錄 格式 $ rmdir 目錄名稱.描述 rmdir(remove directory)命令刪除指定目錄,而目錄必須為空。如果目錄不為空,LINUX將顯示適當?shù)膱箦e信息。 注釋 要刪除含有文件的目錄,你可使用帶有危險性的rmr命令。6. rm 刪除文件格式 $ rm 文件名. 描述 rm命令刪除一個或多個指定文件。 選擇項 i 選擇項使LINUX詢問是否要刪除指定文件。如果是這樣,則鍵入y(表示yes),否則鍵入n (表示no)。選擇項 f 選擇項使LINUX直接刪除文件,不再詢問。舉例 為刪除文件pterodacty,請鍵入命令rm pterodactyCR。
14、 為用i選擇項刪除文件“dinosaur”,請輸入命令rmi dinosaurCR 。LINUX會問你“rm:remove dinosaur?(刪除dinosaur嗎?)”如果你要刪除“ dinosaur”,則鍵入y,否則,鍵入n。 選擇項 v 選擇項使LINUX顯示刪除過程。7. rm r 刪除目錄及其文件 格式 $ rm r 目錄名稱 描述 rm r(remove recursively)命令刪除指定目錄及其內容。 注釋 rm r命令刪除指定目錄以及目錄所含的所有文件和目錄。命令rm r具有很大的危險性,因為你也許不小心刪除了你不愿刪除的文件。8. cp 復制文件 格式 $ cp 文件名1
15、 文件名2 描述 cp命令進行文件“文件名1”的復制拷貝,拷貝件稱為“文件名2” 注釋 如果你將一文件拷貝到已存在的文件中,那么現(xiàn)存文件的內容會被改寫。一般狀態(tài)下不會顯示復制過程,若要顯示復制過程,則加入-v參數(shù)可顯示命令執(zhí)行過程。加入“-R”參數(shù)可同時復制目錄下的所有文件及子目錄。舉例 為將文件從“this”拷貝到“that”中,請輸入命令cp this thatCR9. mv 移動或重新命名文件和目錄 格式 $mv 文件名1 文件名2 $mv 文件名.directory $mv directory directory 描述 mv命令的第1種格式重新命名指定的普通文件;第2種格式將指定的普通
16、文件移到指定目錄;第3種格式重新命名帶指定名的指定目錄,或如果第2個目錄名是1個現(xiàn)存目錄,那么就把第1個指定目錄移到它里面。 舉例 下面的命令將普通文件“文件名1”和“文件名2”移到目錄“directory.1”中: mv 文件名1 文件名2 directory.1 下面這條命令將工作目錄中其名以“文件名”開頭的所有文件移到目錄“ directory.1”中: mv file directory.1 下面這條命令不僅重新命名目錄“index”,而且把它從你的工作目錄移到目錄“usrishmaelbook”中。然而,如果“usrishmaelbookindex” 是1個現(xiàn)存目錄,那么該命令將把“
17、directory.1”移到其中,而不變更名字。 mv directory.1 usrishmaelbookI10. cat 直接顯示文件內容格式 $ cat 文件名. 描述 cat命令將文件名作為其自變量顯示文件的內容(經(jīng)常和more命令搭配使用),或是將數(shù)個文件合并成一個文件。注釋 cat命令通常用文件名作為自變量,如果在你按RETURN鍵之前忘記鍵入文件名,那么請按DELETE鍵。之后,會出現(xiàn)shell提示符.“cat”表示concatenate; cat命令還可用來合并文件。如果文件顯示太快,你可按controls(S)終止 cat的輸出;同時,你可按controlq(Q)恢復輸出。
18、舉例 顯示兩個文件“bird”和“dog”,輸入命令cat bird dogCR。一旦cat顯示完“bird”,它便顯示“dog”。 將preface.txt 附加到outline.txt文件之后: tonyfree tony$ cat preface.txt >> outline.txt 將new.txt和info.txt合并成readme.txt文件: tonyfree tony$ cat new.txt info.txt >readme.txt11. more 分屏顯示文件內容 格式 $ more 文件名. 描述 為了避免畫面顯示瞬間就閃過去,用戶可以使用more命令顯
19、示文件,一次顯示一屏。對每一屏,more都打印一個百分數(shù), 指出已顯示了文件的多少內容。為顯示另一屏幕,應按SPACEBAR(空格鍵)。如果你僅想顯示下一行,則可按RETURN鍵,按Q鍵停止顯示。當more顯示整個文件后,就返回shell提示符。要在完成文件顯示之前退出more,請按DELETE鍵。 選擇項 more有一些選擇項,在你成為有經(jīng)驗的用戶后, 這些選擇項對你會有用。 你的用戶手冊會描述這些選擇項。 注釋 more命令不是所有LINUX系統(tǒng)中都有。 如果你的系統(tǒng)有more命令,你可使用more命令而不使用cat命令,因為more命令允許你控制顯示多少文件內容。當使用ls命令查看文件列
20、表時,若文件太多則可以配合more命令使用。舉例tonyfree bin$ ls al more 12. less 上下瀏覽文件內容格式 $less 文件名描述 less命令顯示文件,且可以回顧前面的內容。當使用less 文件名查看一個文件內容時,屏幕上先顯示出第一頁的內容,看完后按空格鍵跳到下一頁,按Enter鍵向下移一行。另外,按PageUp及PageDown鍵可以看上一頁及下一頁的內容。結束時要按Q鍵跳回shell。13pwd 列出當前目錄的完整路徑名 格式 $ pwd 描述 pwd(print working directory)命令顯示用戶當前所在的目錄。文件系統(tǒng)概述Linux的文件
21、系統(tǒng)和Windows的文件系統(tǒng)有很大的不同。Linux只有一個文件樹,整個文件系統(tǒng)是以一個樹根“/”為起點的,所有的文件和外部設備都以文件的形式掛結在這個文件樹上,包括硬盤,軟盤,光驅,調制解調器等,這和以驅動器盤符為基礎的Windows系統(tǒng)是大不相同的。Linux系統(tǒng)通過目錄將系統(tǒng)中的所有文件分級、分層組織在一起,形成Linux文件系統(tǒng)的樹型層次結構。以根目錄為起點,所有其他目錄都由根目錄派生而來。文件系統(tǒng)Linux缺省支持ext3。Linux的文件結構體現(xiàn)了這個操作系統(tǒng)簡潔清析的設計,我們能夠接觸到的linux發(fā)行版本的根目錄大都是如圖3-1的結構: /bootdevetchomelibb
22、inprocusrvargrublost+foundsharelocalbinmansrcbinman1php.1圖3-1 文件系統(tǒng)結構在Linux系統(tǒng)中有許多系統(tǒng)默認的目錄,這些目錄按照不同的用途而放置了特定的文件:/bin:該目錄存放最常用的基本命令,比如拷貝命令cp、編輯命令vi、刪除命令rm等。/boot:該目錄包含了系統(tǒng)啟動需要的配置文件、內核(vmliuxz)和系統(tǒng)鏡像(initrd.img)等。/dev:該目錄下存放的是Linux中使用或未使用的外部設備文件(fd代表軟盤,hd代表硬盤等),使用這些設備文件可以用操作文件的方式來操作設備。/etc:該目錄下包含了所有系統(tǒng)服務和系統(tǒng)
23、管理使用的配置文件;比如系統(tǒng)日志服務的配置文件syslog.conf,系統(tǒng)用戶密碼文件passwd等。/home:該目錄下包含了除系統(tǒng)管理員外的所有用戶的主目錄,用戶主目錄一般以用戶登陸帳號命名。/lib: 該目錄下包含了系統(tǒng)使用的動態(tài)連接庫(*.so)和內核模塊(在modules下)。/lost+found:該目錄包含了磁盤掃描檢測到的文件碎片,如果你非法關機,那么下次啟動時系統(tǒng)會進行磁盤掃描,將損壞的碎片存到該目錄下。/mnt: 該目錄下包含用戶動態(tài)掛載的文件系統(tǒng)。如果要使用光盤,U盤都一般應該將它們安裝到該目錄下的特定位置。 /proc:該
24、目錄屬于內存映射的一個虛擬目錄,其中包含了許多系統(tǒng)現(xiàn)場數(shù)據(jù),比如進程數(shù),中斷情況,cpu信息等等,其中的信息都是動態(tài)生成的,不在磁盤中存儲。/root:該目錄是系統(tǒng)管理員(root用戶)的主目錄。/sbin:該目錄下包含系統(tǒng)管理員使用的系統(tǒng)管理命令,比如防火墻設置命令iptable,系統(tǒng)停機命令halt等/tmp:該目錄下包含一些臨時文件。/usr:該目錄下一般來說包含系統(tǒng)發(fā)布時自帶的程序(但具體放什么東西,并沒有明確的要求)。其中最值得說明的有三個子目錄/usr/src :Linux內核源代碼就存在這個目錄 /usr/man :Linux中命令的幫助文件/usr/local :新安
25、裝的應用軟件一般默認在該目錄下/var:該目錄中存放著在不斷擴充著的信息,比如日志文件。文件與目錄的基本概念 文件是Linux用來存儲信息的基本結構,它是被命名的存儲在某種介質上的一組信息的集合。Linux系統(tǒng)中有三種基本的文件類型:l 普通文件:又分為文本文件和二進制文件;l 目錄文件:目錄文件存儲了一組相關文件的位置、大小等與文件有關的信息;l 設備文件:Linux系統(tǒng)把每一個I/O設備都看成一個文件,與普通文件一樣處理,這樣可以使文件與設備的操作盡可能統(tǒng)一 。Linux系統(tǒng)以目錄的方式來組織和管理系統(tǒng)中的所有文件。將所有文件的說明信息采用樹型結構組織起來整個文件系統(tǒng)有一個“根”(root
26、),然后在根上分“杈”(directory),任何一個分杈上都可以再分杈,杈上也可以長出“葉子”?!案焙汀拌尽狈Q為“目錄”或“文件夾”。而“葉子”則是一個個的文件。 Linux系統(tǒng)通過目錄將系統(tǒng)中所有的文件分級、分層組織在一起,形成了Linux文件系統(tǒng)的樹型層次結構。以根目錄“/”為起點,所有其他的目錄都由根目錄派生而來。特殊目錄:l “.”代表該目錄自己;l “.”代表該目錄的父目錄;l 對于根目錄,“.”和“.”都代表其自己。工作目錄:用戶登錄到Linux系統(tǒng)后,每時每刻都處在某個目錄之中,此目錄被稱為“工作目錄” 或“當前目錄”用戶主目錄(Home Directory):是系統(tǒng)管理員在
27、增加用戶時為該用戶建立起來的目錄,每個用戶都有自己的主目錄。 使用符號表示。文件權限普通文件目錄讀r文件可讀,可拷貝能顯示打印該目錄下的文件名稱,因此可以用ls指令寫w文件內容可修改能在該目錄下刪除、改變文件名和建立文件執(zhí)行x文件可執(zhí)行(shell腳本或程序)能夠使用該目錄下的文件,即能cd到該目錄,或對文件的路徑能作描述沒有權限-對文件的權利分為三組: 文件主(owner):文件擁有者對文件的存取權利 文件用戶組(group):擁有文件的用戶組;同組用戶對象文件的存取權利 其它用戶(other):既非文件主又非文件用戶組的其他人對該文件的存取權利注意:對于沒有讀或寫權利的文件,只要對該文件的
28、路徑具有寫入和執(zhí)行(搜索)的權利,就可以刪除或重新命名該文件!chmod 修改權限格式 $chmod who Op-code Permission 文件名(or directory)描述 改變一個或多個文件或目錄的權限. 參數(shù): who: u 登錄的所有者 g 組 o 全部其它的用戶 a 全部(隱含):用戶、組、其它 Op-code: + 增加文件的訪問權限 - 撤消文件的某權限 = 規(guī)定絕對權限 Permission: r 讀 w 寫 x 執(zhí)行舉例 $chmod g-w temp 撤消temp文件組用戶的寫權限欲使用文件,必須對該文件,即該文件的路徑具有合適的存取權利。唯有文件的擁有者或su
29、peruser才可改變文件的擁有者和組別。改變了文件的擁有者,用戶將失去對該文件的某些存取權利,因為該用戶不再是擁有者了。改變文件的權限-chmod改變目錄的權限-chmod改變擁有者-chown&chgrp$chown 新?lián)碛姓哂脩魳俗R符 文件名改變組別-chgrp$chgrp 文件的新組別 文件名VIM簡介VIM是Linux 世界中極為普遍的全屏幕文本編輯器,幾乎可以說任何一臺 Linux 機器都會提供這套軟體。Linux 提供一系列的編輯器,包括 emacs, edit 和 VIM 。VIM 的原意是 "Vi IMproved",它是一個所見所得的編輯程序,也
30、就是說可以立刻看到操作結果。VI的名字取自于visual,意為“直觀”,它也是一個全屏幕文本編輯程序。在Linux系統(tǒng)中VI是最常用的編輯程序,它的文本編輯功能十分強大,但使用起來比較復雜。初學者可能感到困難,經(jīng)過一段時間的學習和使用后,你就會體會到使用VI非常方便。Linux系統(tǒng)中的VI其實是VIM。VI與VIM的用法很像,因為VIM是VI的增強版,所以VI的功能VIM都有,而且VIM新增了許多VI沒有的功能,它比VI容易使用。在實際操作之前先對它有個概略的了解會比較好。VIM 有三種模式,輸入模式、命令模式以及末行命令模式。輸入模式即是用來輸入文字資料,而命令模式則是用來下達一些編排文件的
31、操作指令,末行命令模式用來執(zhí)行文件存檔、以及離開VIM 等操作。當執(zhí)行 VIM 后,會先進入命令模式,此時輸入的任何字符都視為指令。如圖4-1所示:命令模式插入模式末行模式進入退出ESC鍵輸入i,o,avim ESC鍵輸入:圖4-1 VIM運行模式進入與離開l 進入輸入模式基本命令:i, a, o 進入文本輸入模式 l 從插入模式或末行命令模式返回命令模式ESC鍵l 從命令模式推出VIM兩個大寫的字母Z,即ZZ,存盤并退出l 末行模式下的基本操作:w 定義文件名稱:wq 存盤退出:q 結束編輯(quit):q! 如果不想存檔而要放棄編輯過的文件則用:q! 強制離開:x 同ZZ,退出VIM并保存
32、。要進入 VIM 可以直接在系統(tǒng)提示下鍵入VIM 文件名稱,VIM可以自動幫你載入所要編輯的文件或是開啟一個新文件。進入VIM 后屏幕左方會出現(xiàn)波浪符號,凡是行首有該符號就代表此列目前是空的。要離開VIM可以在指令模式下鍵入:q, :wq 指令則是存檔后再離開(注意冒號)。要切換到指令模式下則是用 ESC 鍵,如果不曉得現(xiàn)在是處于什麼模式,可以多按幾次ESC,系統(tǒng)會發(fā)出嗶嗶聲以確定進入命令模式。VIM 輸入模式要如何輸入資料呢?有好幾個指令可以進入輸入模式:l 新增 (append)a 從光標所在位置后面開始新增資料,光標后的資料隨新增資料向后移動。A 從光標所在列最后面的地方開始新增資料。
33、l 插入 (insert) i 從光標所在位置前面開始插入資料,光標后的資料隨新增資料向后移動。I 從光標所在列的第一個非空白字元前面開始插入資料。 l 開始 (open) o 在光標所在列下新增一列并進入輸入模式。O 在光標所在列上方新增一列并進入輸入模式。 VIM 基本編輯配合一般鍵盤上的功能鍵,像是方向鍵、Insert 、Delete 等等,現(xiàn)在你應該已經(jīng)可以利用 VIM 來處理文字資料了。當然 VIM 還提供其他許許多多功能讓文字的處理更形方便。l 刪除與修改 何謂編輯?在這里我們認為是文字的新增修改以及刪除,甚至包括文字區(qū)塊的搬移、復制等等。這里先介紹 VIM 的如何做刪除與修改。(
34、注意:在 VIM 的原始觀念里,輸入跟編輯是兩碼事。編輯是在指令模式下操作的,先利用指令移動光標來定位要進行編輯的地方,然后才下指令做編輯。)x 刪除光標所在字元。dd 刪除光標所在的列。r 修改光標所在字元,r 后接著要修正的字元。R 進入取代狀態(tài),新增資料會覆蓋原先資料,直到按 ESC 回到指令模式下為止。s 刪除光標所在字元,并進入輸入模式。S 刪除光標所在的列,并進入輸入模式。 C/C+程序編譯命令是gcc,gcc命令行的語法格式:gcc -option 源文件 目標文件 -o 可執(zhí)行文件 -l library例如: $ gcc f1.c f2.c (針對C語言源程序) 執(zhí)行完成后,生
35、成默認的可執(zhí)行文件a.out。option為編譯選項,GCC總共提供的編譯選項超過100個,但只有少數(shù)幾個會被頻繁使用,我們僅對幾個常用選項進行介紹。-c選項告訴GCC僅把源代碼編譯為目標代碼而跳過匯編和連接的步驟;-E選項指示編譯器僅對輸入文件進行預處理。當這個選項被使用時,預處理器的輸出被送到標準輸出(默認為屏幕)而不是儲存在文件里。-O選項告訴GCC對源代碼進行基本優(yōu)化從而使得程序執(zhí)行地更快;而-O2選項告訴GCC產(chǎn)生盡可能小和盡可能快的代碼。使用-O2選項編譯的速度比使用-O時慢,但產(chǎn)生的代碼執(zhí)行速度會更快。-g選項告訴GCC產(chǎn)生能被GNU調試器使用的調試信息以便調試你的程序,可喜的是
36、,在GCC里,我們能聯(lián)用-g和-O (產(chǎn)生優(yōu)化代碼)。一個c程序的開發(fā)步驟:假設我們編譯一個輸出“Hello World”的程序。首先,在vim編輯器中編輯源文件helloworld.c:/* */#include <stdio.h>main() printf("Hello Worldn");接下來,進行編譯,最簡單的編譯方法是不指定任何編譯選項:gcc helloworld.c它會為目標程序生成默認的文件名a.out,我們可用-o編譯選項來為將產(chǎn)生的可執(zhí)行文件指定一個文件名來代替a.out。例如,將上述名為helloworld.c的C程序編譯為名叫hellow
37、orld的可執(zhí)行文件,需要輸入如下命令:gcc o helloworld helloworld.c最后,執(zhí)行生成的可執(zhí)行文件:./helloworld可以在屏幕上看到輸出結果:Hello World 。實驗2 進程2.1 實驗目的 通過觀察、分析實驗現(xiàn)象,深入理解進程及進程在調度執(zhí)行和內存空間等方面的特點,掌握在POSIX 規(guī)范中fork和kill系統(tǒng)調用的功能和使用。 2.2 實驗要求2.2.1 實驗環(huán)境要求1. 硬件(1) 主機:Pentium III 以上;(2) 內存:128MB 以上;(3) 顯示器:VGA 或更高;(4) 硬盤空間:至少100MB 以上剩余空間。
38、2. 軟件Linux 操作系統(tǒng),內核2.4.26 以上,預裝有X-Window 、vi、gcc、gdb 和任意web 瀏覽器。2.2.2 學生實驗前的準備工作學習man 命令的用法,通過它查看fork 和kill 系統(tǒng)調用的在線幫助,并閱讀參考資料,學會fork 與kill 的用法。復習C 語言的相關內容。2.3 實驗內容通讀下列代碼: /* * POSIX 下進程控制的實驗程序殘缺版 */ #include <stdio.h> #include <sys/types.h>#include <unistd.h> #include <
39、;signal.h>#include <ctype.h> /* 允許建立的子進程個數(shù)最大值 */#define MAX_CHILD_NUMBER 10 /* 子進程睡眠時間 */#define SLEEP_INTERVAL 2 int proc_number=0; /* 子進程的自編號,從0開始 */void do_something(); main(int argc, char* argv) int child_proc_number = MAX_CHILD_NUMBER; /* 子進程個數(shù) */int i, ch; pid_t child_pid; pid_t pid10
40、=0; /* 存放每個子進程的id */ if (argc > 1) /* 命令行參數(shù)中的第一個參數(shù)表示建立幾個子進程,最多10個 */ child_proc_number = atoi(argv1); child_proc_number= (child_proc_number > 10) ? 10 : child_proc_number; for (i=0; i<child_proc_number; i+) /* 在這里填寫代碼,建立child_proc_number個子進程* 子進程要執(zhí)行* proc_number = i; * do_something();* 父進程把
41、子進程的id保存到pidi */ /* 讓用戶選擇殺死哪個進程。輸入數(shù)字(自編號)表示殺死該進程* 輸入q退出 */while (ch = getchar() != 'q') if (isdigit(ch) /* 在這里填寫代碼,向pidch-'0'發(fā)信號SIGTERM, * 殺死該子進程 */ /* 在這里填寫代碼,殺死本組的所有進程 */ return; void do_something() for(;) /* 打印子進程自編號。為清晰,在每個號碼前加“號碼+3”個空格* 比如號碼是1,就打印" 1" */printf(&
42、quot;This is process No.%*dn",proc_number+3, proc_number); sleep(2); /* 主動阻塞兩秒鐘 */ 先猜想一下這個程序的運行結果。假如運行“./process 20”,輸出會是什么樣?然后按照注釋里的要求把代碼補充完整,運行程序??梢远噙\行一會兒,并在此期間啟動、關閉一些其它進程,看process 的輸出結果有什么特點,記錄下這個結果。開另一個終端窗口,運行“ps aux|grep process”命令,看看process 究竟啟動了多少個進程。回到程序執(zhí)行窗口,按“數(shù)字鍵+回車”嘗試殺掉一兩個進程,再到另一個窗口看進
43、程狀況。按q 退出程序再看進程情況。 2.4 實驗報告回答下列問題,寫入實驗報告。1. 你最初認為運行結果會怎么樣?2. 實際的結果什么樣?有什么特點?試對產(chǎn)生該現(xiàn)象的原因進行分析。3. proc_number 這個全局變量在各個子進程里的值相同嗎?為什么?4. kill 命令在程序中使用了幾次?每次的作用是什么?執(zhí)行后的現(xiàn)象是什么?5. 使用kill 命令可以在進程的外部殺死進程。進程怎樣能主動退出?這兩種退出方式哪種更好一些?6. 把你的程序源代碼附到實驗報告后。 實驗3 線程3.1 實驗目的通過觀察、分析實驗現(xiàn)象,深入理解線程及線程在調度執(zhí)行和內存空間等方面的特點,并掌握線程與
44、進程的區(qū)別。z 掌握在POSIX 規(guī)范中pthread_create() 函數(shù)的功能和使用方法3.2 實驗要求3.2.1 實驗環(huán)境要求1. 硬件(1) 主機:Pentium III 以上;(2) 內存:128MB 以上;(3) 顯示器:VGA 或更高;(4) 硬盤空間:至少100MB 以上剩余空間。2. 軟件Linux 操作系統(tǒng),內核2.4.26 以上,預裝有X-Window 、vi、gcc、gdb 和任意web 瀏覽器。3.2.2 學生實驗前的準備工作閱讀參考資料,了解線程的創(chuàng)建等相關系統(tǒng)調用。3.3 實驗內容通讀下列代碼:/* * POSIX 下線程控制的實驗程序殘缺版 1.2 7 */&
45、#160;#include <stdio.h> #include <sys/types.h>#include <unistd.h> #include <ctype.h>#include <pthread.h> #define MAX_THREAD 3 /* 線程的個數(shù) */unsigned long long main_counter, counterMAX_THREAD; /* unsigned longlong是比long還長的整數(shù) */void* thread_worker(void*); int main(int argc,
46、char* argv) int i, rtn, ch; pthread_t pthread_idMAX_THREAD = 0; /* 存放每個線程的id */ for (i=0; i<MAX_THREAD; i+) /* 在這里填寫代碼,用pthread_create建一個普通的線程,* 線程id存入pthread_idi, * 線程執(zhí)行的函數(shù)是thread_worker,并i作為參數(shù)傳遞給線程 */ /* 用戶按一次回車執(zhí)行下面的循環(huán)體一次。按q退出 */do unsigned long long sum = 0;/* 求所有線程的counter的和 */for (i=0; i<
47、MAX_THREAD; i+) sum += counteri; printf("%llu ", counteri); printf("%llu/%llu", main_counter, sum); while (ch = getchar() != 'q'); return 0; void* thread_worker(void* p) int thread_num; /* 在這里填寫代碼,把main中的i的值賦給thread_num */ for(;) /* 無限循環(huán) */ counterthread
48、_num+; /* 本線程的counter加一 */ main_counter+; /* 主counter 加一 */ 按照注釋里的要求把代碼補充完整,正確編譯程序后,先預計一下這個程序的運行結果。具體的結果會是什么樣?運行程序。開另一個終端窗口,運行“ps aux”命令,看看thread 的運行情況,注意查看thread 的CPU 占用率,并記錄下這個結果。3.4 實驗報告回答下列問題,寫入實驗報告。1. 你最初認為前三列數(shù)會相等嗎?最后一列斜杠兩邊的數(shù)字是相等,還是大于或者小于關系? 2. 最后的結果如你所料嗎?有什么特點?試對原因進行分析。 3. thread 的CPU 占用率是多少?為
49、什么會這樣? 4. thread_worker()內是死循環(huán),它是怎么退出的?你認為這樣退出好嗎? 5. 把你的程序源代碼附到實驗報告后。并請保留源代碼,下一個死鎖實驗需要使用 實驗4 死鎖4.1 實驗目的通過觀察、分析實驗現(xiàn)象,深入理解理解互斥鎖的原理及特點掌握在POSIX 規(guī)范中的互斥函數(shù)的功能及使用方法4.2 實驗要求4.2.1 實驗環(huán)境要求1. 硬件(1) 主機:Pentium III 以上;(2) 內存:128MB 以上;(3) 顯示器:VGA 或更高;(4) 硬盤空間:至少100MB 以上剩余空間。2. 軟件Linux 操作系統(tǒng),內核2.4.26 以上,預裝有X-Wind
50、ow 、vi、gcc、gdb 和任意web 瀏覽器。4.2.2 學生實驗前的準備工作準備好上節(jié)實驗完成的程序thread.c 。閱讀參考資料,了解互斥鎖的加解鎖機制及相關的系統(tǒng)調用。4.3 實驗內容找到thread.c 的代碼臨界區(qū),用臨界區(qū)解決main_counter 與sum 不同步的問題。通讀下列代碼:/* * POSIX 下線程死鎖的演示程序 1.2 * 作者:Sunner Sun * 最后修改時間:2005-3-16 17:56 */ #include <stdio.h> #include <sys/types.h>#include <unistd.h&
51、gt; #include <ctype.h>#include <pthread.h> #define LOOP_TIMES 10000 pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;void* thread_worker(void*);void critical_section(int thread_num, int i); int main(void) int rtn, i; pthread_t pthread_
52、id = 0; /* 存放子線程的id */ rtn = pthread_create(&pthread_id, NULL, thread_worker, NULL ); if(rtn != 0) printf("pthread_create ERROR!n"); return -1; for (i=0; i<LOOP_TIMES; i+) pthread_mutex_lock(&mutex1);pthread_mutex_lock(&mutex2); critical_section(1, i); pthread_mutex_unlock(&
53、amp;mutex2);pthread_mutex_unlock(&mutex1); pthread_mutex_destroy(&mutex1);pthread_mutex_destroy(&mutex2); return 0; void* thread_worker(void* p) int i; for (i=0; i<LOOP_TIMES; i+) pthread_mutex_lock(&mutex2);pthread_mutex_lock(&mutex1); critical_section(2, i); pthr
54、ead_mutex_unlock(&mutex2);pthread_mutex_unlock(&mutex1); void critical_section(int thread_num, int i) printf("Thread%d:%dn", thread_num, i); 仔細閱讀程序,編譯程序后,先預計一下這個程序的運行結果。運行程序。若程序沒有響應,按ctrl+c 中斷程序運行,然后再重新運行,如此反復若干次,記錄下每次的運行結果。若產(chǎn)生了死鎖,請修改程序,使其不會死鎖。4.4 實驗報告回答下列問題,寫入實驗報告。1. 你預想deadlock.c 的運行結果會如何?2. deadlock.c 的實際運行結果如何?多次運行每次的現(xiàn)象都一樣嗎?為什么會這樣?3. 把修改后的兩
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 休閑零食合伙人合同范例
- 醫(yī)療設備中運用區(qū)塊鏈技術的芯片安全分析
- 區(qū)塊鏈賦能教育行業(yè)-學生信息透明化與認證
- 親屬贈與房屋合同范例
- alc板勞務合同范例
- app維護服務合同范例
- 中外合營合同范例
- 麗水專業(yè)食堂承包合同范例
- 2024年地質勘探和地震專用儀器項目資金需求報告代可行性研究報告
- pt項目合同范例
- 第13課資本主義世界殖民體系的建立與亞非拉民族獨立運動課件-2023-2024學年中職高一下學期高教版(2023)世界歷史全一冊
- 鄉(xiāng)村文旅產(chǎn)業(yè)振興規(guī)劃方案
- 2024年第二十五屆“飛向北京·飛向太空”全國青少年航空航天模型教育競賽活動競賽規(guī)則
- 粵教版高中信息技術學業(yè)水平考試綜合練習(含答案)
- 帶你玩轉VR虛擬現(xiàn)實智慧樹知到期末考試答案2024年
- 七年級數(shù)學(上)有理數(shù)混合運算100題(含答案)
- 管道焊接技術培訓
- 中考英語模擬拔高性題目+答案
- 世界高速鐵路發(fā)展概況課件
- 徐志摩《偶然》課件
- 職業(yè)健康安全目標 指標及管理方案
評論
0/150
提交評論