版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實習報告:Linux并發(fā)程序設(shè)計學生姓名:張云龍班級:12軟工A2學號:一、實習內(nèi)容1、Linux進程控制調(diào)試上面7.1Linux進程控制的各程序代碼。1示例:使用系統(tǒng)調(diào)用fork(),創(chuàng)建新進程。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.1。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gccp7.1.cp7.1對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.1對程序進行編譯執(zhí)行!三通過測試,可以很清楚的知道,一個進程有2801個子進程!2示例:使用系統(tǒng)調(diào)用getpid(),獲
2、得進程標識符一在linux中打開vi編輯器,新建一個c程序,名字叫做7.2。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gccp7.2.cp7.2對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.2對程序進行編譯執(zhí)行!三通過測試,可以很清楚的知道,現(xiàn)在正在運行的進程的ID是2813!3示例:fork()創(chuàng)建子進程后,子進程在屏幕上顯示子進程標識符與父進程標識符一在linux中打開vi編輯器,新建一個c程序,名字叫做7.3。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。
3、然后在提示符$后輸入命令:gccp7.3.cp7.3對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.3對程序進行編譯執(zhí)行!三通過測試,可以很清楚的知道,現(xiàn)在正在運行的進程的ID是2834!父進程2863個!4使用execl()系統(tǒng)調(diào)用,運行目錄列表程序ls。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.4。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.4.c-o7.4對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.4對程序進行編
4、譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)嶋H上是實現(xiàn)了”ls-l”的命令!5功能改用execv()系統(tǒng)調(diào)用完成。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.5。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.5.cp7.5對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.5對程序進行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)嶋H上是實現(xiàn)了”ls-l”的命令!6使用系統(tǒng)調(diào)用fork()與exec,使父子進程運行完全不同的程序。一在linux中打開vi編輯器,新建一個
5、c程序,名字叫做7.6。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gccp7.6.cp7.6對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.6對程序進行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)嶋H上是實現(xiàn)了”ls-l”的命令!7使用系統(tǒng)調(diào)用exit(),終止進程。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.7。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.7.cp7.7對程序進行調(diào)試!若是沒有任何的錯誤
6、和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.7對程序進行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)崿F(xiàn)了把進程為18188的程序退出的命令!8使用wait()系統(tǒng)調(diào)用,實現(xiàn)父子進程的簡單同步。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.8。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gccp7.8.cp7.8對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.8對程序進行編譯執(zhí)行!三。在等待了大約十秒鐘之后,會彈出如下的結(jié)果圖四。通過測試,我很活楚的知道,該程序?qū)嶋H上
7、是實現(xiàn)了進程等待的命令9系統(tǒng)調(diào)用sleep()一在linux中打開vi編輯器,新建一個c程序,名字叫做7.9。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.9.c-o7.9對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.9對程序進行編譯執(zhí)行!三。在等待了大約一分鐘之后,會彈出如下的結(jié)果圖四。通過測試,我很活楚的知道,該程序?qū)嶋H上是實現(xiàn)了子進程開始睡眠,而父進程等待的命令也就是所謂的程序的掛起!2、Linux進程通信調(diào)試上面7.2Linux進程通信的各程序代碼。事例:在父子進程間建立管
8、道,且子進程向父進程輸送信息。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.10。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.9.c-o7.9對程序進行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.9對程序進行編譯執(zhí)行!并完成并發(fā)程序設(shè)計的實驗內(nèi)容:并發(fā)程序的設(shè)計關(guān)鍵是使用創(chuàng)建進程的系統(tǒng)調(diào)用,使一個程序運行時可以生成幾個同時運行的程序,如果程序中沒有創(chuàng)建進程的動作則為順序程序設(shè)計。本實驗中的并發(fā)程序例子完成兩個程序child和father之間的數(shù)據(jù)傳遞工作,具體做法分為四步。
9、步驟1:編制并發(fā)程序pipeline.c。單擊紅帽子,在“GNOM麝助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中鍵入程序并保存為pipeline.c。在該程序中定義管道和文件描述符,并且創(chuàng)建子進程child。該程序用到的系統(tǒng)調(diào)用有pipe()、dup()、fork()、close、execl()、exit,它們的功能分別是建立管道、復制文件描述符、創(chuàng)建進程并使子進程與父進程有相同的程序正文、關(guān)閉文件描述符、用指定文件覆蓋調(diào)用程序、撤銷當前進程清單4-5pipeline.c/定義管道程序defineSTD_INPUT0/定義標準輸入設(shè)備描述符defineSTD_OUTPUT1/定義標
10、準輸出設(shè)備描述符intfd2;main()staticcharprocess1="father”,process2="child”;pipe(fd);pipeline(process1,process2);exit(1);pipeline(char*process1,char*process2)inti;while(i=fork()=-1);if(i)close(fd0);close(STD_OUTPUT);dup(fd1);close(fd1);execl(process1,process1,0);printf("fatherfailed.n");el
11、seclose(fd1);close(STD_INPUT);dup(fd0);close(fd0);execl(process2,process2,0);printf("childfailed.n");exit(2);/定義管道/調(diào)用自定義函數(shù)pipeline()/程序結(jié)束/創(chuàng)建進程,直到創(chuàng)建成功為止/關(guān)閉管道輸入描述符/關(guān)閉標準輸出推f述符1/指定標準輸出描述符1為管道寫指針/關(guān)閉原始管道寫指針/用程序father覆蓋當前程序/execl()執(zhí)行失敗/關(guān)閉管道輸出描述符/關(guān)閉標準輸入描述符0/指定標準輸入描述符0為管道讀指針/關(guān)閉原始管道讀指針/用程序child覆蓋當前程
12、序/execl()執(zhí)行失敗/程序結(jié)束步驟2:編制“管道寫”程序father.c作為父進程的一部分工作。其內(nèi)容如下:單擊紅帽子,在“GNOM麝助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中鍵入程序并保存為father.c。清單4-6father.cmain()“staticcharstring="Parentisusingpipewrite.”;intlen;len=sizeof(string);write(l,string,len);/*將string中的內(nèi)容寫入管道中*/printf("parent,parent,parentn");exit(0);步
13、驟3:編制“管道讀”程序child.c作為子進程的一部分工作。其內(nèi)容如下:child.co單擊紅帽子,在“GNOM麝助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中鍵入程序并保存為清單4-7child.cmain()/*從管道中讀數(shù)據(jù)并存入output中*/n”,output);charoutput30;read(0,output,30);printf("sreturn(0);步驟4:編譯。cc-ochildchild.ccc-ofatherfather.ccc-opipelinepipeline.c步驟5:運行。./pipeline首先單擊紅帽子,在“GNOME助”菜單中單
14、擊“附件”-“文本編輯器”命令,在文本編輯中分別鍵入三個程序。三個程序的程序名分別為pipeline.cfather.c和child.c。若運行不成功,則應該用文本編輯器對源程序進行修改調(diào)試。運行顯示結(jié)果為:"仙"54山IM*3ZE34T»1*3«l3k>頊年5鼻偵戲卻17心537Bl«lfl.:ltlin-!|943*,鼻*MF>0陽4lumm撲14dUfl134“swigtHHWD434JlEITJh.triid*-*rffi劇上那T同KA>i-fltK-J#MhWURrhIdrCtaiM_jihaiiilr«&
15、#171;Ljl|rd?*H£,左&¥前耳M神孕fiii-WIIiob.Ir«H3LJ¥|jrr_pip-rirarrap'F43ih»iir*«LJVrfi*mI>ilitt.k<iHiii*toonr««ij|!0c«-fchiM.C-o£hIPdIr*iLIJ>rpajIIBCLRedHatLlbuSfFHnv<,tkjrlkIL«-a.':-<'8WnflirrjKx0hdk.iLn.v星舉弛也*ZA廣/兒-_LL4
16、TE?Irfgl.w-4J=Ti-tile|4Htj£lwM5工5Hnds如alIjLlRnna*fcipLw4inc."IdrMIUIwis-fi(iorIiihi”乏衰云云W/云IWE心,1導gMgwgq5斗皿:1*1眥§WAWiMg$E心H3.WE3、Linux命令接口管理進程步驟1:登錄進入GNOME在Linux登錄框中填寫指導老師分配的用戶名和口令,登錄Linux系統(tǒng)。步驟2:訪問命令行。單擊紅帽子,在“GNOMIB助”菜單中單擊“系統(tǒng)工具”-“終端”命令,打開“終端”窗口。步驟3:回顧系統(tǒng)進程概念。每個運行的程序都會創(chuàng)建一個進程,進程分配到一個唯一的進
17、程標識符(PID)。PID被系統(tǒng)用于標識和跟蹤進程,直到進程結(jié)束。操作系統(tǒng)內(nèi)核管理所有進程的初始化和終止。每一個進程都要求系統(tǒng)資源(例如CPU時間和RAMS間)在其中工作。當進程啟動的時候,操作系統(tǒng)把系統(tǒng)資源分配給每個進程,當進程終止的時候,系統(tǒng)回收這些資源。在Linux系統(tǒng)啟動的時候,首先啟動的兩個進程是sched(調(diào)度)和init(初始化),它們管理著其他進程。Linux系統(tǒng)中有幾種不同類型的進程:守護進程:由Linux內(nèi)核啟動的進程,為了特定目的而存在。例如,lpsched守護進程存在只是為了處理打印作業(yè)。父進程:派生其他進程的進程是父進程。一個叫做init的守護進程是第一個調(diào)用的進程。
18、每一個進程,除了init之外,都有一個父進程。子進程:由其他進程派生出來的進程叫做子進程。孤兒進程:在進程返回輸出之前,它的父進程結(jié)束了,這樣的進程叫做孤兒進程。偶進程:子進程沒有帶著輸出返回給父進程。這樣的進程在系統(tǒng)中變成丟失的進程。使用此前的信息,完成以下填空:1)Linux系統(tǒng)中,幾乎每一個啟動的進程,都會由內(nèi)核分配一個唯一的進程標識符(PID),用于跟蹤從進程啟動到進程結(jié)束。2)當啟動新進程的時候,內(nèi)核也給它們分配系統(tǒng)資源,如內(nèi)存和資源03)永遠不向父進程返回輸出的進程叫做偶進程。4)由父進程派生出來的進程叫做子進程。5)父進程是一個派生另一個進程的進程。6)運行用于提供服務(wù)的Linu
19、x系統(tǒng)進程是守護進程。7)如果父進程在子進程之前結(jié)束,它創(chuàng)建了一個孤兒進程步驟4:回顧ps命令和信息。ps命令用于列出當前系統(tǒng)中運行的進程。如果一個進程耗時太長,或者看上去好像已經(jīng)終止了,表現(xiàn)為一個終端窗口不再響應或掛起,通常需要使用ps查看系統(tǒng)中的進程。通過列出進程,可以查看初始化進程的命令或程序的名字,以及所有它派生出來的子進程。通過多次執(zhí)行ps命令,查看進程的時間進程占用的CPU時間,可以檢查一個進程是否還在運行。如果時間小再增長,那么進程可能已經(jīng)終止了。如果進程占用太長的時間或者已經(jīng)停止,可以使用ps命令檢查進程的進程ID(PID),然后殺死進程。ps命令的輸出將顯示PID號和與其相關(guān)
20、的命令或程序。PID號通常用于終止一個進程。ps命令(ps-options)的3個主要選項如下表所示。表3-5ps命令選項ps選項意義功能Ps無選項顯示當前shell或終端窗口中,當前用戶的進程信息ps-e每一個顯示系統(tǒng)中每一個進程的信息psf完全產(chǎn)生一個完全列表,給出每個進程的所有可用信息ps-uuserid用戶顯示特定用戶的所有進程基本的ps命令顯示在當前shell中的進程信息,用戶只能夠查看在這個終端窗口中初始化的進程。輸入ps命令,將結(jié)果填入表3-6中。表3-6實驗記錄PIDTTYTIMECMD?2367?pts/0?00:00:00Bash?3001?pts/0?00:00:00?p
21、s從當前終端窗口中,練習使用給出的每個選項的ps命令。輸入ps-f命令,顯示運行在系統(tǒng)中的某個進程的完全信息,填入表3-7中。表3-7實驗記錄UIDPIDPPIDCSTIMETTYTIMECMD?root?2937?29350?18:15pts/0?00:00:00bash?root?30032937?018:34?pts/0?00:00:00?ps-fps-f命令輸出的各欄標題見表3-8所示。表3-8ps-f欄標題值描述UID初始化進程的用戶IDPID進程的進程標識號。PID可以用來殺死進程PPID進程的父進程標識號C進程的優(yōu)先級STIME進程的啟動時間TTY控制進程終端的終端舉型TIME進
22、程使用的CPU時間的數(shù)量CMD命令名守護進程(執(zhí)行的程序的名字)步驟5:列出系統(tǒng)中運行的所有進程。輸入ps-ef命令,顯示運行在系統(tǒng)中的各個進程的完全信息。執(zhí)行該命令,并與ps-f命令的輸出結(jié)果對照,一致嗎?有何不同?不一致!用戶類型增加了!注意分析當前終端窗口中的輸出結(jié)果:a. 顯示了多少個進程?64b. 進程ID的PID是什么?程的進程標識號。PID可以用來殺死進程c. 啟動進程的命令(CMD)是什么?schedd. 請觀察,什么命令的PID號是1?intite. 再次運行ps-ef命令,計算進程的數(shù)目:然后執(zhí)行下列命令把輸出結(jié)果輸入到wc命令中:ps-ef|wc-l第一個數(shù)字顯示的是行的
23、數(shù)目,也是進程的數(shù)目:4執(zhí)行manps命令,可以打開Linux用戶命令手冊,了解ps命令的用法,輸入wq命令可退出用戶手冊的閱讀。man命令可以執(zhí)行嗎?結(jié)果如何?不可以步驟6:根據(jù)命令名搜索特定的進程。為了終止一個進程,必須找到該進程的PID。大多數(shù)運行的系統(tǒng)中,有上百個進程在運行,ps-ef的列表可能很長。如果知道啟動進程的執(zhí)行程序的名字,可以更快地找到PID。通過把ps命令的輸出結(jié)果輸入到grep中,可以搜索想要終止的特定進程,確定正確的PID。grep命令可以在其他命令的輸出中搜索所有類型的特征字符串。-l(長的輸出)選項將顯示和找到的PID相關(guān)的進程的名字;-e選項顯示PID和初始化命
24、令的名字。a. 單擊紅帽子,在“GNOME助”菜單中單擊“游戲”-“堆麻將”命令,打開“堆麻將”游戲。b. 在當前的終端窗口中,執(zhí)行命令:ps-e|grepmahjongg(“堆麻將”游戲的進程名是“mahjongg”),查找和“堆麻將”游戲調(diào)度守護進程相關(guān)的所有進程。c. 顯示了多少個相關(guān)進程?2d. 顯示進程中最小的進程ID號是多少?2818c.在當前終端窗口中執(zhí)行命令:pgrep-lmahjongg查找所有和“堆麻將”游戲調(diào)度守護進程相關(guān)的進程。ps和pgrep命令輸出之間有什么不同?ps-e|grepmahjongg命令比pgrep-lmahjongg命令輸出結(jié)果多顯示了TTY和TIM
25、E步驟7:確定一個要終止的進程。當試圖終止一個程序,或者釋放一個掛起的終端窗口的時候,殺死和不響應的應用相關(guān)的PID可能還是不夠的,一般需要殺死那個進程的父進程,在少數(shù)情況下,甚至要殺死父進程的父進程。為了沿著層次結(jié)構(gòu),從子進程追溯到派生它們的父進程,必須能夠查找PID和PPIDo必須首先確定最低級不響應進程的PID。通常,可以試著去殺死那個進程。如果這樣做不能夠停止那個進程,可能需要殺死它的父進程。殺死父進程將殺死所有它派生的子進程。殺死一個父進程也比殺死幾個子進程快得多。1)在GNOME前終端窗口中,輸入ps命令。有多少進程正在運行?為什么只有這么少的進程?有2個進程正在運行。因為單前只運
26、行bash和ps這兩個程序2)正在運行的進程的名字是什么?它表示什么?bash和ps。bash是打開終端后自動啟動的程序,ps是當前執(zhí)行的命令。3)這個進程的PID是多少?2836和28684)在bashshell中輸入命令csh,打開一個Cshell會話,當前系統(tǒng)的會話提示符是什么?5)輸入ps-f命令,顯示在當前shell中運行的進程的所有信息?,F(xiàn)在什么進程正在運行?bash,-sh和ps-f_6)bash的PID是-sh(csh)的PPID嗎?M7)輸入命令sleepl000&,創(chuàng)建一個進程,把執(zhí)行掛起1000秒(大約15分鐘)。&表示在后臺運行命令,返回shell提示符
27、,這樣您可以繼續(xù)工作。8) 再次輸入ps-f命令。-sh(csh)的PID是sleep命令的PPID嗎?哪個PID是csh(Cshell)的子進程?是,sleep1000和ps-f都是csh(Cshell)的子進程9) 輸入命令kill-9<csh的PID>退出Cshell。然后再次鍵入ps-f命令。什么PID是sleep父命令的PPID?0sleep進程現(xiàn)在是什么類型的進程?jjffi兒進程步驟8:使用kill命令終止一個進程。信號用于終止、掛起和繼續(xù)進程。有時候使用Ctrl+c可以終止一個不響應的進程。這樣向進程發(fā)送一個中斷(INT)信號,終止它及所有它派生的子進程。kill命
28、令提供了一個終止不想要的命令進程的直接方法。當想停止一個運行了很長時間的命令的時候,或者當需要終止一個不能夠正常退出的進程的時候,它很有用。指定PID正常地殺死一個進程。kill-signalprocess-id為了使用kill命令終止一個進程,應該首先鍵入ps找出進程的PID,然后鍵入kill緊跟著PID。如果使用kill而沒有指定信號,貝M言號15(SIGTERM)將被發(fā)送給特定PID號的進程。這叫做軟殺死,通常終止了進程。如果可能,最好軟殺死進程,這樣它可以正確地關(guān)閉文件,溫和地終止進程。如果需要強制終止一個進程,可以使用帶-9選項的kill命令。這個選項叫做強制殺死,當shell對所有
29、其他終止信號都不響應的時候,需要使用它來殺死shell0kill-9process-id注意:對于shell之外的進程,把kill-9(SIGKILL)作為最后的選項,因為它是一種生硬的方法,不允許正確的進程終止。a. 輸入命令ps-f,顯示在當前shell中運行的進程的完整信息?,F(xiàn)在什么進程正在運行?bash和ps-fb. 因為sleep進程現(xiàn)在是一個孤兒進程,已經(jīng)被init進程(PID#l)收養(yǎng),輸入命令,對sleep的PID執(zhí)行軟殺死。如果sleep已經(jīng)終止(超過15分鐘),則重復步驟7中的8)、9)操作,然后軟殺死sleep程序。再次輸入ps-f命令。現(xiàn)在什么進程正在運行?bash和p
30、s-f步驟9:按照用戶查找和終止一個進程。ps命令可以帶-u(用戶)選項使用,查找指定用戶的進程。這個命令比ps-ef使用得更多,因為一般只能夠管理屬于自己的進程。我們可以通過用戶登錄名或者UID號來查找用戶的進程。用戶只能夠終止自己的進程,但是超級用戶可以終止系統(tǒng)中所有運行的進程。ps-ulogin-ID或UID1)啟動計算器和“堆麻將”游戲GNOME用程序。2)使用帶-u選項的ps命令,查找以登錄ID(例如,userX)或者數(shù)字UID(例如,1004)運行的所有進程。計算器應用程序的PID是什么?0153)使用軟殺死終止計算器應用程堆麻將”是否仍然在桌面上運行?是4)使用ps-u命令組合g
31、rep,查找“堆麻將”程序的PID號,而不是使用ps-u查找整個列表。您使用什么命令?提示:猜猜“堆麻將”程序的命令名中可能有哪個字母,使用grep搜索那些字母。ps-u|grepmahjongg5)終止“堆麻將"程序。它是否還在桌面上運行?否6)退出Cshell。步驟10:刪除所有在本實驗中創(chuàng)建的文件和目錄。4、Linux命令接口的重定向與管道1. 使用重定向標準輸出符號步驟3:重定向標準輸出,創(chuàng)建一個文件。右尖括號或稱大于符號(>)把命令的輸出發(fā)送到一個文件中:使用單個右尖括號,當指定文件名不存在的時候,將創(chuàng)建一個新文件;如果文件名存在,它將被覆蓋。(注意:命令、重定向符號
32、和文件名之間的空格是可選的)。重定向標準輸出命令的格式是:command>file1)為核實當前所在目錄位置,使用什么命令?w如果當前位置不在主目錄中,使用什么命令可以改變到主目錄中?cd/2)如果希望把文件和目錄列表截獲,存儲為主目錄中的一個文件,這樣可以追蹤主目錄中有什么文件。使用什么命令,把長文件列表的輸出重定向,創(chuàng)建一個叫做homedir.list的文件。ls>homedir.list_3) 新文件homedir.list被放在哪里?根目錄使用ls命令核實新文件存在。4)使用什么命令,以一次一屏的方式,來查看剛才創(chuàng)建的文件內(nèi)容?_lsl|morehomedir.list20
33、14343013420143+30134罰14343013420143430134AO張云/張云龍張奩龍張云龍20143430134201434301342014343013420143430134茂云丸弗云龍張云建張云龍Re<1.Inux20143430134201434301342014343013420143430134張云龍張云龍張蕓龍張云龍s航面-司回5)使用head命令截獲homedir.list文件的前10行,通過重定向,創(chuàng)建一個叫做dhomedir.list-top-10的新文件。應該使用什么命令?head-10-l|morehomedir.list>dhomedi
34、r.list-top-10使用more命令查看文件的內(nèi)容。sdhomedir.list-top-10LlnuMtail-10homedir.list>dhomedir.list-top-1020143430134201434301342014343013420143430134張云龍張云龐張云龍20143430134201434301342014343013420143430134強云龍張云龍張云龍2014343013420143430134201434301342014343013+彌云龍漲云龍張云龍張云龍張<龍張K龍張若龍張云龍眼云龍張云龍張云龍張云龍張云龍2O14343D13
35、42014343013420143430134201434301342014343013420143430134201434301342014343013420143430134201434301342014343013420143430134住“冬1曰6)使用tail命令,截獲homedir.list文件的最后10行,通過重定向,創(chuàng)建一個叫做dhomedir.list-top-10的新文件。使用什么命令?53(ft畢利心白君也>典嘛Hflf叫(1LrsoIhtist/#head-10hulrwdjr.1ir1Ihi-top10R.Lt1*1mJI1lio礦1/J#”1inHrnir.l
36、iti1ftLcm泉indrai-itr-x2I-&QErciot“5月2»1431bindrftTEr-Mr4T<intrnnt1|IL?4SH2AZMNhnnidrwKr-Kr-s2T-OOtT-OOt40965J30LtchrrDddirilk*wjlisrs2()T<njitT<HJ1.11J17K4弓月烏I04:27-rttrrf-1EOlrcjut6USfJI07i41ilhotirtdIrn1K1kliip-JUdiMi-ki8*x55f<hUEruul4(1065>j3104121«tcdrvwirlgT-nntrcin
37、t4II1N;5月:U>22?47fdOrxrx6TCIOtroot41I9G5月30|4;S0bonrrwrrr<intI(Klt1】35月SI07:4(1InorrEclir.1iixIdrwsrKT-X2T-OOtinot4U96衛(wèi)M3-IM-25initrddrwatik.1yliJUt.rtiuL4(JW52&L415I1ibdr叫2TMtrfintll;'iR45f:!耕£如H如EEddr瞄lxln2TdOtTdQt4(196J00WI-2&miecklrwsr-urxGTTCHlt4fi9i>5HWmidrmt一暮一畔2TflO
38、troot2OO3-0H2Sopt-i.lrUtti-n2fniltrotiL“5月30157pjaciirtJdr-xr-xr-x71)TOOtrootII5M21dl4procdirmlxidTdOEroot4(1965J-J110713Broo1hrx2f川J!1r4iij1.S35W2M23:40drftsrwirM10T<lOtrciat4(106snil怵:砧iitpdr心u-Ff15W“1%5月2S23:40i»rdrft'jfr-sr-x17tcintTcmt409652H?2;44vnrfile:dhcEnedlir,1t-三IXM件KU勵,刑Jl&g
39、t;i1!-tv>綣刷CJO*自,互)和隹也LLdrwcrxr-x9motmotSf衛(wèi)Si14:Si1ihd.iVvxiniuu-LrumL1631145J-J址導壬歡:多世l-us1uulid<|irkrM211joiro<*t#Ui*HiiKtTtih<"<11warkrm麻ienoirno15JJ3104r34mitdrMistr-xr-x2rootmat-1ID'S*fl2003-0125ciptdt-u.rkrs2rn<itrrho1:4C9GRj1M111pritc-1icedrhrxrm7»molrovL0S月:邊2
40、1.Idproctlrr-x14lootrootAJJ§107rSSronidiwtM-x.r-s.Siootfcm>LSJJ222-40nbip*<1ru*Ltwi£rui10rrmi4(3$GSJJ31Ofi:SjS-itrpdiw*rkrm】$IO4>1rem1JiDWGS月W網(wǎng)124mu礦4rwkrr_m17rciolraolS月#導Z2:4va?-dhCMiii1dEri,1i*Iiop10XE'b】.b-oo-1vhinEdirdfveIc!fdUlilUlHrhreiiTMlid'1imiiniIrd
41、Ilih|iu-D1hu»i/ft蘭!使用more命令查看文件的內(nèi)容。lsl|moredhomedir.list-top-1014340134云7ftJ.434JO1B4ZOL4-43O±34枇心土*JZ<>14:4-4-Ol:44強XE2(J143:«D1Ft4孑忙技ZO1-+S4-3O1:«-4旅云麥*'201343033-4我KZP:20143430134擊云北2014430134亦春成*-£?!?3心。134我云源2014321013志五席一口4343g34*聲朋截獲cal-y命令的輸出,把它存到名為calendar
42、的文件中。查看文件的內(nèi)容。截獲了什么?cal-y>calendar|morecalendar8)截獲cal2010命令的輸出,把它存到名為calendar的文件中。查看文件的內(nèi)容。其中有什么內(nèi)容?cal-y2010>calendar|morecalendar2010年12個月的日歷日歷有什么變化?不是2014年,變成了2010年的了步驟4:防止使用重定向的時候覆蓋文件。在bashshell中,一個叫做noclobber的選項可以用來設(shè)定防止在重定向的過程中覆蓋文件。可以在命令行中使用$set-onoclobber命令來完成。代表選項。為了重新激活clobber特性,使用$set-o
43、noclobber;撤消則用set+onoclobber。如果你使用的是cshshell,為了激活/撤消Cshell中的clobber特性,使用setnoclobber和unsetnoclobber。1)輸入命令,打開shell中的noclobber選項。輸入什么命令?set-onoclobber2)輸入命令ls-l>homedir.list,結(jié)果是什么?bash:homedir.list:cannotoverwriteexistingfile.因為clobber選項防止了重定向過程覆蓋文件,結(jié)果是什么?輸入命令ls-l>homedir.list2不能重定向步驟5:向現(xiàn)有的文件追加
44、輸出。如果想向一個現(xiàn)有的文件追加(添加到末尾)文本而不是覆蓋它,可以使用雙右尖括號(>>)。這個選項當文件不存在的時候,會創(chuàng)建一個新文件,或者追加到已有文件。追加命令的格式是:command>>file1)輸入命令,顯示“HappyBday”一行字,使用重定向符號截獲輸出,把它存到叫做bday4me的文件中。使用什么命令?echo“HappyBda,>>bday4me2)輸入命令,顯示“YOURNAMEL行字,使用雙重定向符號,把輸出追加到bday4me文件中。查看bday4me文件的內(nèi)容。其中有什么?echo“YOURNAME>>bday4me
45、3)輸入命令,顯示您出生年月的日歷(如果在1985年的6月出生,輸入cal61985),使用雙重定向符號,把輸出追加到bday4me文件中。使用什么命令?cal061985>>bday4me4)查看bday4me文件的內(nèi)容。注意這3個命令的輸出在bday4me文件中已經(jīng)被組合起來了。您是在一周中的哪一天出生的?周2. 使用管道符號步驟6:把命令的輸出導入到另一個命令中。1)使用管道元字符,發(fā)送ls-l命令的輸出,作為more命令的輸入(注意:如果在當前目錄中沒有太多的文件,使用/etc目錄獲取長列表)。把輸出作為more命令的輸入的時候,得到什么結(jié)果?輸入命令ls-l|more結(jié)果
46、以一屏一次的方式顯示在屏幕上2)查看使用ls-l|more命令列出來的文件,注意創(chuàng)建或修改的日期。為了查看在同一個月被創(chuàng)建或修改的文件或目錄的列表,可以使用grep命令對那個月進行搜索。當月份顯示在列表中的時候,指定它(例如:Oct)。輸入命令ls-1|grepOct(或者想查找的月份)。結(jié)果是什么?只顯示10月的目錄3)目錄總是4096字節(jié)大小。輸入命令ls-1|grep4096。產(chǎn)生的列表是什么4096字節(jié)大小的目錄顯示20143430134張云龍20143+30134報云龍201+3430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍20143430134張云龍800HedHatLinukJL屋,4)可以使用多個管道連接多個命令。輸入取得長文件列表輸出的命令,把它輸入給tail
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東建筑安全員知識題庫附答案
- 貴州財經(jīng)職業(yè)學院《現(xiàn)代西方哲學專題》2023-2024學年第一學期期末試卷
- 蠶豆產(chǎn)業(yè)基地建設(shè)項目可行性研究報告-蠶豆市場需求持續(xù)擴大
- 貴陽康養(yǎng)職業(yè)大學《醫(yī)療健康商務(wù)溝通》2023-2024學年第一學期期末試卷
- 廣州中醫(yī)藥大學《生物統(tǒng)計附試驗設(shè)計實驗》2023-2024學年第一學期期末試卷
- 2025年-吉林省安全員知識題庫附答案
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學院《心理咨詢與心理輔導》2023-2024學年第一學期期末試卷
- 2025年-河北省安全員B證考試題庫
- 2025建筑安全員A證考試題庫
- 2025年山西省建筑安全員-C證考試(專職安全員)題庫及答案
- 【MOOC】隧道工程-中南大學 中國大學慕課MOOC答案
- ISO27001信息安全管理體系培訓資料
- 紅色經(jīng)典影片與近現(xiàn)代中國發(fā)展學習通超星期末考試答案章節(jié)答案2024年
- 基金應知應會專項考試題庫(證券類190題)附有答案
- 劇作策劃與管理智慧樹知到期末考試答案2024年
- 客情關(guān)系的建立和維護
- 2022年合理使用抗生素試題
- 簡單娛樂yy頻道設(shè)計模板
- 110kV變壓器保護整定實例
- 健康體檢的八大意義
- 銷售顧問初級認證筆試題
評論
0/150
提交評論