![Linux并發(fā)程序設(shè)計(jì)實(shí)習(xí)報(bào)告33p_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/d947fc7c-a5da-43dc-99e5-89c846de32ba/d947fc7c-a5da-43dc-99e5-89c846de32ba1.gif)
![Linux并發(fā)程序設(shè)計(jì)實(shí)習(xí)報(bào)告33p_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/d947fc7c-a5da-43dc-99e5-89c846de32ba/d947fc7c-a5da-43dc-99e5-89c846de32ba2.gif)
![Linux并發(fā)程序設(shè)計(jì)實(shí)習(xí)報(bào)告33p_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/d947fc7c-a5da-43dc-99e5-89c846de32ba/d947fc7c-a5da-43dc-99e5-89c846de32ba3.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)習(xí)報(bào)告:Linux并發(fā)程序設(shè)計(jì)學(xué)生姓名:張?jiān)讫埌嗉墸?2軟工A2一、實(shí)習(xí)內(nèi)容1、Linux進(jìn)程控制調(diào)試上面7.1Linux進(jìn)程控制的各程序代碼。1 示例:使用系統(tǒng)調(diào)用fork(),創(chuàng)建新進(jìn)程。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.1。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.1.c-o7.對程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.1對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,一個進(jìn)程有2801個子進(jìn)程!2 示例:使用系統(tǒng)調(diào)用getpid(),獲
2、得進(jìn)程標(biāo)識符一在linux中打開vi編輯器,新建一個c程序,名字叫做7.2。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.2.c-o7.2寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.2對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,現(xiàn)在正在運(yùn)行的進(jìn)程的ID是2813!3 示例:fork()創(chuàng)建子進(jìn)程后,子進(jìn)程在屏幕上顯示子進(jìn)程標(biāo)識符與父進(jìn)程標(biāo)識符。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.3。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退
3、出!二。然后在提示符$后輸入命令:gcc-g7.3.c-o7.3寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.3對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,現(xiàn)在正在運(yùn)行的進(jìn)程的ID是2834!父進(jìn)程2863個!4 使用execl()系統(tǒng)調(diào)用,運(yùn)行目錄列表程序ls。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.4。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.4.c-o7.4寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.
4、4對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)嶋H上是實(shí)現(xiàn)了”lsT”的命令!5 功能改用execv()系統(tǒng)調(diào)用完成。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.5。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.5.c-o7.5寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.5對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)嶋H上是實(shí)現(xiàn)了”lsT”的命令!6使用系統(tǒng)調(diào)用fork()與exec,使父子進(jìn)程運(yùn)行完全不同的程序。一在linux中打開vi編
5、輯器,新建一個c程序,名字叫做7.6。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.6.c-o7.6寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.6對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)嶋H上是實(shí)現(xiàn)了”lsT”的命令!7使用系統(tǒng)調(diào)用exit(),終止進(jìn)程。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.7。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.7.c-o7.7寸程序進(jìn)行調(diào)試!
6、若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.7對程序進(jìn)行編譯執(zhí)行!三通過測試,可以很清楚的知道,該程序?qū)崿F(xiàn)了把進(jìn)程為18188的程序退出的命令!8使用wait()系統(tǒng)調(diào)用,實(shí)現(xiàn)父子進(jìn)程的簡單同步。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.8。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.8.c-o7.8寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.8對程序進(jìn)行編譯執(zhí)行!三。在等待了大約十秒鐘之后,會彈出如下的結(jié)果圖四。通過測試,我很活
7、楚的知道,該程序?qū)嶋H上是實(shí)現(xiàn)了進(jìn)程等待的命令9系統(tǒng)調(diào)用sleep()一在linux中打開vi編輯器,新建一個c程序,名字叫做7.9。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.9.c-o7.9寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.9對程序進(jìn)行編譯執(zhí)行!三。在等待了大約一分鐘之后,會彈出如下的結(jié)果圖四。通過測試,我很活楚的知道,該程序?qū)嶋H上是實(shí)現(xiàn)了子進(jìn)程開始睡眠,而父進(jìn)程等待的命令也就是所謂的程序的掛起!2、Linux進(jìn)程通信調(diào)試上面7.2Linux進(jìn)程通信的各程序代碼。事
8、例:在父子進(jìn)程間建立管道,且子進(jìn)程向父進(jìn)程輸送信息。一在linux中打開vi編輯器,新建一個c程序,名字叫做7.10。然后將上面的程序代碼輸入其中!在將程序完整的輸入之后!保存程序,并退出!二。然后在提示符$后輸入命令:gcc-g7.9.c-o7.9寸程序進(jìn)行調(diào)試!若是沒有任何的錯誤和提醒的話,那么在接著出現(xiàn)的提示符$后輸入命令:./7.9對程序進(jìn)行編譯執(zhí)行!并完成并發(fā)程序設(shè)計(jì)的實(shí)驗(yàn)內(nèi)容:并發(fā)程序的設(shè)計(jì)關(guān)鍵是使用創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用,使一個程序運(yùn)行時可以生成幾個同時運(yùn)行的程序,如果程序中沒有創(chuàng)建進(jìn)程的動作則為順序程序設(shè)計(jì)。本實(shí)驗(yàn)中的并發(fā)程序例子完成兩個程序child和father之間的數(shù)據(jù)傳遞工
9、作,具體做法分為四步。步驟1:編制并發(fā)程序pipeline.c。單擊紅帽子,在“GNOME幫助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中鍵入程序并保存為pipeline.c。在該程序中定義管道和文件描述符,并且創(chuàng)建子進(jìn)程child。該程序用到的系統(tǒng)調(diào)用有pipe()、dup()、fork()、close、execl()、exit,它們的功能分別是建立管道、復(fù)制文件描述符、創(chuàng)建進(jìn)程并使子進(jìn)程與父進(jìn)程有相同的程序正文、關(guān)閉文件描述符、用指定文件覆蓋調(diào)用程序、撤銷當(dāng)前進(jìn)程。清單4-5pipeline.c/定義管道程序# defineSTD_INPUT0/定義標(biāo)準(zhǔn)輸入設(shè)備描述符# defi
10、neSTD_OUTPUT1/定義標(biāo)準(zhǔn)輸出設(shè)備描述符intfd2;main()staticcharprocess1="father”,process2="child”;pipe(fd);/定義管道pipeline(process1,process2);/調(diào)用自定義函數(shù)pipeline()exit(1);/程序結(jié)束)pipeline(char*process1,char*process2)(inti;while(i=fork()=-1);if(i)(close(fd0);close(STD_OUTPUT);dup(fd1);close(fd1);execl(process1,p
11、rocess1,0);printf("fatherfailed.n");)else(close(fd1);close(STD_INPUT);dup(fd0);close(fd0);execl(process2,process2,0);printf("childfailed.n");)/創(chuàng)建進(jìn)程,直到創(chuàng)建成功為止/關(guān)閉管道輸入描述符/關(guān)閉標(biāo)準(zhǔn)輸出描述符1/指定標(biāo)準(zhǔn)輸出描述符1為管道寫指針/關(guān)閉原始管道寫指針/用程序father覆蓋當(dāng)前程序/execl()執(zhí)行失敗/關(guān)閉管道輸出描述符/關(guān)閉標(biāo)準(zhǔn)輸入描述符0/指定標(biāo)準(zhǔn)輸入描述符0為管道讀指針/關(guān)閉原始管道讀指針
12、/用程序child覆蓋當(dāng)前程序/execl()執(zhí)行失敗exit(2);/程序結(jié)束)步驟2:編制“管道寫”程序father.c作為父進(jìn)程的一部分工作。其內(nèi)容如下單擊紅帽子,在“GNOME幫助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中鍵入程序并保存為father.c。清單4-6father.cmain()(staticcharstring="Parentisusingpipewrite.”;intlen;len=sizeof(string);write(l,string,len);/*將string中的內(nèi)容寫入管道中*/printf("parent,parent,p
13、arentnnn");exit(0);步驟3:編制“管道讀”程序child.c作為子進(jìn)程的一部分工作。其內(nèi)容如下:單擊紅帽子,在“GNOME幫助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中鍵入程序并保存為child.c。清單4-7child.cmain()(charoutput30;read(0,output,30);/*從管道中讀數(shù)據(jù)并存入output中*/printf("%snchild,child.n”,output);return(0);步驟4:編譯。cc-ochildchild.ccc-ofatherfather.ccc-opipelinepipelin
14、e.c步驟5:運(yùn)行。./pipeline首先單擊紅帽子,在“GNOME幫助”菜單中單擊“附件”-“文本編輯器”命令,在文本編輯中分別鍵入三個程序。三個程序的程序名分別為pipeline.c,father.c和child.c。若運(yùn)行不成功,則應(yīng)該用文本編輯器對源程序進(jìn)行修改調(diào)試。運(yùn)行顯示結(jié)果為:e,wm,Z«1<4U4lUi皆Sflli-UjBfcag辱偵燦*藤*4加J2414343:±01«1I«3IM>土51礎(chǔ)75§斐tHFFiHaFflrlfrHmnrlS衛(wèi)CHwmtm:±52353L一*In足卜尤#ih礎(chǔ)zm”、外=
15、EWzmg'7>14341BM4史Qr|43«JBI34-:mgtt#.tTY*兆燈K皆4E4fLh*a四VLM£JiI£b:JU:0021:包接C3回|舊:aa勺心Tb'ri!B.1CSXTT>¥.zsoKft日;UHIMKUfiW狀物與巾AIMIfrijnmic.4lh<>-iin>*acIf>.-“p*in*-<iIpelhne|rf)IH!laiJllIliF1p!I)V|Ji*|F.h*f?荷if1樽.0r-rmi'Jla-rj.0n&ibnnfcI-fj|rra|
16、71;*hiId_c-nlii9:l|14mIllnijHulli-1viit|<.pI!rWparrn-1Rpirrfit,pii<ntHk»TlllJ><h->IdhiIdlidH-i-Iid!jii|ij>ip«ij(-SiR;iFHlILiniiA.*1r好*!岫星3、Linux命令接口管理進(jìn)程步驟1:登錄進(jìn)入GNOME。在Linux登錄框中填寫指導(dǎo)老師分配的用戶名和口令,登錄Linux系統(tǒng)。步驟2:訪問命令行。單擊紅帽子,在“GNOME幫助”菜單中單擊“系統(tǒng)工具”-“終端”命令,打開“終端”窗口。步驟3:回顧系統(tǒng)進(jìn)程概念。每個運(yùn)
17、行的程序都會創(chuàng)建一個進(jìn)程,進(jìn)程分配到一個唯一的進(jìn)程標(biāo)識符(PID)。PID被系統(tǒng)用于標(biāo)識和跟蹤進(jìn)程,直到進(jìn)程結(jié)束。操作系統(tǒng)內(nèi)核管理所有進(jìn)程的初始化和終止。每一個進(jìn)程都要求系統(tǒng)資源(例如CPU時間和RAM空間)在其中工作。當(dāng)進(jìn)程啟動的時候,操作系統(tǒng)把系統(tǒng)資源分配給每個進(jìn)程,當(dāng)進(jìn)程終止的時候,系統(tǒng)回收這些資源。在Linux系統(tǒng)啟動的時候,首先啟動的兩個進(jìn)程是sched(調(diào)度)和init(初始化),它們管理著其他進(jìn)程。Linux系統(tǒng)中有幾種不同類型的進(jìn)程:守護(hù)進(jìn)程:由Linux內(nèi)核啟動的進(jìn)程,為了特定目的而存在。例如,lpsched守護(hù)進(jìn)程存在只是為了處理打印作業(yè)。父進(jìn)程:派生其他進(jìn)程的進(jìn)程是父進(jìn)程
18、。一個叫做init的守護(hù)進(jìn)程是第一個調(diào)用的進(jìn)程。每一個進(jìn)程,除了init之外,都有一個父進(jìn)程。子進(jìn)程:由其他進(jìn)程派生出來的進(jìn)程叫做子進(jìn)程。孤兒進(jìn)程:在進(jìn)程返回輸出之前,它的父進(jìn)程結(jié)束了,這樣的進(jìn)程叫做孤兒進(jìn)程。僵進(jìn)程:子進(jìn)程沒有帶著輸出返回給父進(jìn)程。這樣的進(jìn)程在系統(tǒng)中變成丟失的進(jìn)程。使用此前的信息,完成以下填空:1) Linux系統(tǒng)中,幾乎每一個啟動的進(jìn)程,都會由內(nèi)核分配一個唯一的進(jìn)程標(biāo)識符(PID),用于跟蹤從進(jìn)程啟動到進(jìn)程結(jié)束。2) 當(dāng)啟動新進(jìn)程的時候,內(nèi)核也給它們分配系統(tǒng)資源,如內(nèi)存和資源。3) 永遠(yuǎn)不向父進(jìn)程返回輸出的進(jìn)程叫做僵進(jìn)程。4) 由父進(jìn)程派生出來的進(jìn)程叫做子進(jìn)程。5) 父進(jìn)程
19、是一個派生另一個進(jìn)程的進(jìn)程。6) 運(yùn)行用于提供服務(wù)的Linux系統(tǒng)進(jìn)程是守護(hù)進(jìn)程。7) 如果父進(jìn)程在子進(jìn)程之前結(jié)束,它創(chuàng)建了一個孤兒進(jìn)程。步驟4:回顧ps命令和信息。ps命令用于列出當(dāng)前系統(tǒng)中運(yùn)行的進(jìn)程。如果一個進(jìn)程耗時太長,或者看上去好像已經(jīng)終止了,表現(xiàn)為一個終端窗口不再響應(yīng)或掛起,通常需要使用ps查看系統(tǒng)中的進(jìn)程。通過列出進(jìn)程,可以查看初始化進(jìn)程的命令或程序的名字,以及所有它派生出來的子進(jìn)程。通過多次執(zhí)行ps命令,查看進(jìn)程的時間一一進(jìn)程占用的CPU時間,可以檢查一個進(jìn)程是否還在運(yùn)行。如果時間小再增長,那么進(jìn)程可能已經(jīng)終止了。如果進(jìn)程占用太長的時間或者已經(jīng)停止,可以使用ps命令檢查進(jìn)程的進(jìn)程
20、ID(PID),然后殺死進(jìn)程。ps命令的輸出將顯示PID號和與其相關(guān)的命令或程序。PID號通常用于終止一個進(jìn)程。ps命令(ps-options)的3個主要選項(xiàng)如下表所示。表3-5ps命令選項(xiàng)ps選項(xiàng)意義功能Ps無選項(xiàng)顯示當(dāng)前shell或終端窗口中,當(dāng)前用戶的進(jìn)程信息ps-C每一個顯示系統(tǒng)中每一個進(jìn)程的信息ps-f完全產(chǎn)生一個完全列表,給出每個進(jìn)程的所有可用信息ps-uuserid用戶顯示特定用戶的所有進(jìn)程基本的ps命令顯示在當(dāng)前shell中的進(jìn)程信息,用戶只能夠查看在這個終端窗口中初始化的進(jìn)程。輸入ps命令,將結(jié)果填入表3-6中。表3-6實(shí)驗(yàn)記錄PIDTTYTIMECMD2367pts/000
21、:00:00Bash3001pts/000:00:00ps從當(dāng)前終端窗口中,練習(xí)使用給出的每個選項(xiàng)的ps命令。輸入ps-f命令,顯示運(yùn)行在系統(tǒng)中的某個進(jìn)程的完全信息,填入表3-7中。表3-7實(shí)驗(yàn)記錄UIDPIDPPIDCSTIMETTYTIMECMDroot29372935018:15pts/000:00:00bashroot30032937018:34pts/000:00:00ps-fps-f命令輸出的各欄標(biāo)題見表3-8所示。表3-8ps-f欄標(biāo)題值描述UID初始化進(jìn)程的用戶IDPID進(jìn)程的進(jìn)程標(biāo)識號。PID可以用來殺死進(jìn)程PPID進(jìn)程的父進(jìn)程標(biāo)識號C進(jìn)程的優(yōu)先級STIME進(jìn)程的啟動時間TT
22、Y控制進(jìn)程終端的終端舉型TIME進(jìn)程使用的CPU時間的數(shù)量CMD命令名守護(hù)進(jìn)程(執(zhí)行的程序的名字)步驟5:列出系統(tǒng)中運(yùn)行的所有進(jìn)程。輸入ps-ef命令,顯示運(yùn)行在系統(tǒng)中的各個進(jìn)程的完全信息。執(zhí)行該命令,并與ps-命令的輸出結(jié)果對照,一致嗎?有何不同?不一致!用戶類型增加了!注意分析當(dāng)前終端窗口中的輸出結(jié)果:a. 顯示了多少個進(jìn)程?64b. 進(jìn)程ID的PID是什么?進(jìn)程的進(jìn)程標(biāo)識號。PID可以用來殺死進(jìn)程c. 啟動進(jìn)程的命令(CMD)是什么?schedd. 請觀察,什么命令的PID號是1?intite. 再次運(yùn)行ps-ef令,計(jì)算進(jìn)程的數(shù)目:然后執(zhí)行下列命令把輸出結(jié)果輸入到wc命令中:ps-ef
23、|wc-l第一個數(shù)字顯示的是行的數(shù)目,也是進(jìn)程的數(shù)目:64執(zhí)行manps命令,可以打開Linux用戶命令手冊,了解ps命令的用法,輸入wq命令可退出用戶手冊的閱讀。man命令可以執(zhí)行嗎?結(jié)果如何?不可以步驟6:根據(jù)命令名搜索特定的進(jìn)程。為了終止一個進(jìn)程,必須找到該進(jìn)程的PID。大多數(shù)運(yùn)行的系統(tǒng)中,有上百個進(jìn)程在運(yùn)行,ps-ef的列表可能很長。如果知道啟動進(jìn)程的執(zhí)行程序的名字,可以更快地找到PID。通過把ps命令的輸出結(jié)果輸入到grep中,可以搜索想要終止的特定進(jìn)程,確定正確的PID。grep命令可以在其他命令的輸出中搜索所有類型的特征字符串。-l(長的輸出)選項(xiàng)將顯示和找到的PID相關(guān)的進(jìn)程的
24、名字;-e選項(xiàng)顯示PID和初始化命令的名字。a. 單擊紅帽子,在“GNOME幫助”菜單中單擊“游戲”-“堆麻將”命令,打開“堆麻將”游戲。b. 在當(dāng)前的終端窗口中,執(zhí)行命令:ps-e|grepmahjongg(“堆麻將”游戲的進(jìn)程名是“mahjongg”),查找和“堆麻將”游戲調(diào)度守護(hù)進(jìn)程相關(guān)的所有進(jìn)程。c. 顯示了多少個相關(guān)進(jìn)程?2d. 顯示進(jìn)程中最小的進(jìn)程ID號是多少?2818c.在當(dāng)前終端窗口中執(zhí)行命令:pgrep-lmahjongg查找所有和"堆麻將”游戲調(diào)度守護(hù)進(jìn)程相關(guān)的進(jìn)程。ps和pgrep命令輸出之間有什么不同?ps-e|grepmahjongg命令比pgrep-lma
25、hjongg命令輸出結(jié)果多顯示了TTY和TIME步驟7:確定一個要終止的進(jìn)程。當(dāng)試圖終止一個程序,或者釋放一個掛起的終端窗口的時候,殺死和不響應(yīng)的應(yīng)用相關(guān)的PID可能還是不夠的,一般需要?dú)⑺滥莻€進(jìn)程的父進(jìn)程,在少數(shù)情況下,甚至要?dú)⑺栏高M(jìn)程的父進(jìn)程。為了沿著層次結(jié)構(gòu),從子進(jìn)程追溯到派生它們的父進(jìn)程,必須能夠查找PID和PPID。必須首先確定最低級不響應(yīng)進(jìn)程的PID。通常,可以試著去殺死那個進(jìn)程。如果這樣做不能夠停止那個進(jìn)程,可能需要?dú)⑺浪母高M(jìn)程。殺死父進(jìn)程將殺死所有它派生的子進(jìn)程。殺死一個父進(jìn)程也比殺死幾個子進(jìn)程快得多。1)在GNOME當(dāng)前終端窗口中,輸入ps命令。有多少進(jìn)程正在運(yùn)行?為什么只
26、有這么少的進(jìn)程?有2個進(jìn)程正在運(yùn)行。因?yàn)閱吻爸贿\(yùn)行bash和ps這兩個程序2)正在運(yùn)行的進(jìn)程的名字是什么?它表示什么?bash和ps。bash是打開終端后自動啟動的程序,ps是當(dāng)前執(zhí)行的命令。3)這個進(jìn)程的PID是多少?2836和28684)在bashshell中輸入命令csh,打開一個Cshell會話,當(dāng)前系統(tǒng)的會話提示符是什么?5)輸入ps-f命令,顯示在當(dāng)前shell中運(yùn)行的進(jìn)程的所有信息?,F(xiàn)在什么進(jìn)程正在運(yùn)行?bash,-sh和ps-f6)bash的PID是-sh(csh)的PPID嗎?是7)輸入命令sleepl000&,創(chuàng)建一個進(jìn)程,把執(zhí)行掛起1000秒(大約15分鐘)。&a
27、mp;表示在后臺運(yùn)行命令,返回shell提示符,這樣您可以繼續(xù)工作。8)再次輸入ps-f命令。-sh(csh)的PID是sleep命令的PPID嗎?哪個PID是csh(Cshell)的子進(jìn)程?是,sleep1000和ps-f都是csh(Cshell)的子進(jìn)程9)輸入命令kill-9<csh的PID>退出Cshell。然后再次鍵入ps-f命令。什么PID是sleep父命令的PPID?0sleep進(jìn)程現(xiàn)在是什么類型的進(jìn)程?孤兒進(jìn)程步驟8:使用kill命令終止一個進(jìn)程。信號用于終止、掛起和繼續(xù)進(jìn)程。有時候使用Ctrl+c可以終止一個不響應(yīng)的進(jìn)程。這樣向進(jìn)程發(fā)送一個中斷(INT)信號,終止
28、它及所有它派生的子進(jìn)程。kill命令提供了一個終止不想要的命令進(jìn)程的直接方法。當(dāng)想停止一個運(yùn)行了很長時間的命令的時候,或者當(dāng)需要終止一個不能夠正常退出的進(jìn)程的時候,它很有用。指定PID正常地殺死一個進(jìn)程。kill-signalprocess-id為了使用kill命令終止一個進(jìn)程,應(yīng)該首先鍵入ps找出進(jìn)程的PID,然后鍵入kill緊跟著PID。如果使用kill而沒有指定信號,貝U信號15(SIGTERM)將被發(fā)送給特定PID號的進(jìn)程。這叫做軟殺死,通常終止了進(jìn)程。如果可能,最好軟殺死進(jìn)程,這樣它可以正確地關(guān)閉文件,溫和地終止進(jìn)程。如果需要強(qiáng)制終止一個進(jìn)程,可以使用帶-9選項(xiàng)的kill命令。這個選
29、項(xiàng)叫做強(qiáng)制殺死,當(dāng)shell對所有其他終止信號都不響應(yīng)的時候,需要使用它來殺死shell。kill-9process-id注意:對于shell之外的進(jìn)程,把kill-9(SIGKILL灼最后的選項(xiàng),因?yàn)樗且环N生硬的方法,不允許正確的進(jìn)程終止。a. 輸入命令ps-f顯示在當(dāng)前shell中運(yùn)行的進(jìn)程的完整信息?,F(xiàn)在什么進(jìn)程正在運(yùn)行?bash和ps-fb. 因?yàn)閟leep進(jìn)程現(xiàn)在是一個孤兒進(jìn)程,已經(jīng)被init進(jìn)程(PID#l)收養(yǎng),輸入命令,對sleep的PID執(zhí)行軟殺死。如果sleep已經(jīng)終止(超過15分鐘),則重復(fù)步驟7中的8)、9)操作,然后軟殺死sleep程序。再次輸入ps-f命令?,F(xiàn)在什
30、么進(jìn)程正在運(yùn)行?bash和ps-f步驟9:按照用戶查找和終止一個進(jìn)程。ps命令可以帶-u(用戶)選項(xiàng)使用,查找指定用戶的進(jìn)程。這個命令比ps-ef使用得更多,因?yàn)橐话阒荒軌蚬芾韺儆谧约旱倪M(jìn)程。我們可以通過用戶登錄名或者UID號來查找用戶的進(jìn)程。用戶只能夠終止自己的進(jìn)程,但是超級用戶可以終止系統(tǒng)中所有運(yùn)行的進(jìn)程。ps-ulogin)或UID1)啟動計(jì)算器和“堆麻將”游戲GNOME應(yīng)用程序。2)使用帶-u選項(xiàng)的ps命令,查找以登錄ID(例如,userX)或者數(shù)字UID(例如,1004)運(yùn)行的所有進(jìn)程。計(jì)算器應(yīng)用程序的PID是什么?30153)使用軟殺死終止計(jì)算器應(yīng)用程序,“堆麻將”是否仍然在桌面上
31、運(yùn)行?是4)使用ps-u命令組合grep,查找"堆麻將”程序的PID號,而不是使用ps-u查找整個列表。您使用什么命令?提示:猜猜“堆麻將”程序的命令名中可能有哪個字母,使用grep搜索那些字母。ps-u|grepmahjon5)終止“堆麻將”程序。它是否還在桌面上運(yùn)行?否6)退出Cshello步驟10:刪除所有在本實(shí)驗(yàn)中創(chuàng)建的文件和目錄。4、Linux命令接口的重定向與管道1. 使用重定向標(biāo)準(zhǔn)輸出符號步驟3:重定向標(biāo)準(zhǔn)輸出,創(chuàng)建一個文件。右尖括號或稱大于符號(>)把命令的輸出發(fā)送到一個文件中:使用單個右尖括號,當(dāng)指定文件名不存在的時候,將創(chuàng)建一個新文件;如果文件名存在,它將被
32、覆蓋。(注意:命令、重定向符號和文件名之間的空格是可選的)。重定向標(biāo)準(zhǔn)輸出命令的格式是:command>file1)為核實(shí)當(dāng)前所在目錄位置,使用什么命令?pwd如果當(dāng)前位置不在主目錄中,使用什么命令可以改變到主目錄中?cd/2)如果希望把文件和目錄列表截獲,存儲為主目錄中的一個文件,這樣可以追蹤主目錄中有什么文件。使用什么命令,把長文件列表的輸出重定向,創(chuàng)建一個叫做homedir.list的文件。ls>homedir.list3)新文件homedir.list被放在哪里?根目錄使用ls命令核實(shí)新文件存在。4)使用什么命令,以一次一屏的方式,來查看剛才創(chuàng)建的文件內(nèi)容?ls-l|mor
33、ehomedir.li20143430134張?jiān)讫?0143+30134張?jiān)讫?0143430134張?jiān)讫?0143430134張?jiān)讫?0143430134張M龍20143430134弗云龍20143430134張泛龍20143430134張?jiān)讫?0143430134張赤龍20143430134張?jiān)讫?0143430134張蕓龍20143430134張?jiān)讫圧edHatUnuxhead命令截獲homedir.list文件的前10行,通過重定向,創(chuàng)建一個叫做dhomedir.list-top-10的新文件。應(yīng)該使用什么命令?5)使用head-10homedir.list>dhomedir.l
34、ist-top-10使用more命令查看文件的內(nèi)容。ls-l|moredhomedir.list-top-1020143430134張?jiān)砌?0143430134米云龍20143430134張?jiān)讫?0143430134張蕓龍20143430134張?jiān)讫?0143430134張?jiān)讫?0143430134強(qiáng)云龍20143430134張蕓龍2014343013+201434301342014343013420143430134張?jiān)讫團(tuán)張?jiān)讫埼以讫坵張?jiān)讫?HOAFlfidNatLinuxStflW古者®虻強(qiáng)(也神JUX也raolOlaeaIhot/!HIlroredhuiwdir.1if1-
35、Mp-ID以用R21Sdrwxr-xr-M2rcotroot4(ll>6sn28!4iSlbindrhjwlx.r-K4T<JUiruut1(121SYt2&22:4*1Ixiioi11告W5月:M4Hiroot4kjITnnlrootT1141|rootT4IHJ/I#林。dIMfcnrwdar.Iit>dh0wdnr,IMttop10drMr-sr一JOr-uotE-L*I'"1roui.drMm'、SJiTflntdr«Mcr*xr-K1023*>OOtdirwLN-,6r<iib|:-rw-r1T-not(rk*
36、tr-Kr-K2I4II1H>“聽1iyHwnfl月n555555devtllioiiFdir1.lii04-2f1'22i«rfdO14-SfiiMsrrrhnnTdir.121.lAdImuIdIrdrM惠grtiul:tuol41煩5髭出I4;5IlibdrsMi-2r<jotruot惜洶SJ迎22:3'J心1+ft)Bildm岫ri-s-K2riipr心i4(iO4V300WI-撲lli4*drML.、nrci-ntroof4(lfNi5F1北04:24mldi«AS.I-SlI-K2I4j4Jtf4j<JL4(19620Q3-U1
37、-2SuiiLld41聞4KI海2003-01-355H:141Ih:4H9tidri*xixf-x2TCifitrootMHI2drwxrwrwl偵TdQtroot4(106mu®f-置15ffl-otrfirn14gdrrkrx17TdDtrooti'iiIJLHJ-UUL山M,f-dr-xr-sr-s79rootrootT<wtJ1I<1Ldm*一葛一*d.rwlrmrx2root2Killt明ihih31Ofr:55inrp3-S22?4ftitur2K22v.nriUjIcror21:143UII月月E:e:dhonpdir.20143430134201
38、4343013420143430134201#3430134張?jiān)讫垙堅(jiān)谱髲圧龍張?jiān)讫?01434301341434301342D1434301342D14343O134張?jiān)讫埛鯧龍20143430134201434301342014343013420143430134灰云龍張廿龍張?jiān)讫圧pd>I.inu以3*回池冠4rmnF.OkxuatXTffik/_".,B琳1MK少S«v;>作枷:口軒刑匹寸WiUj'll'drr-xr-x9lootrool40/85iJ2S14r511i樸ditu%-=2:rrt«iti"ciotIj5
39、ijl1J2乏:39loMt+frfeuilddrwkc胃fsc2rootro#f4(59*0(H2HitwM-rdrw*rxr_m6ruoI4娘BS月3104:24rmii:divoiJ-xr-x罷lootroutllJytiSOUdJ-Oi-25ciptdimr-xrx2motruot4UNH5JJ0IH-IHpruct»eedrmrwrsc7Srootro*t0S/J3021pr«<-drrX14rn<n-frn-a10?行fijJlil07-r-nntd.fwhrxrx2iudtruoLBl#衛(wèi)5月呈耳22:4<Jsbmil心,rwowl1liiu
40、-uIru-uI5Jl31<JG:SS-kitp<11rrsINirioqrhitAJJ,W寓:40onrdIwar-Kr-M17inoiro*tAJJ22r44var<lh<brrrdir.H<vWfep1(3bint>ooI<hmuldirdrvt*.frd。IM'|Rlhnih1"!ilHili'.II"MBiniIrdIihIItp-yL/1微心*Ih"iiI/fl令,截獲6)使用tail命homedir.list文件的最后10行,通過重定向,創(chuàng)建一個叫做dhomedir.list-top-10的新
41、文件。使用什么命令?tail-10homedir.list>dhomedir.list-top-10使用more命令查看文件的內(nèi)容。ls-l|moredhomedir.listbp-10ZO1434-J0134報(bào)點(diǎn)N”4:mO】?!蝶m抵云及2O14J»43O134虧£五沏£5434g'Mq7K武境JO14rJ*3014¥£jl?.她N”】4K4?1口耳4g'戒迎20143430T34年峪云席£14330134亍忙云癱推云史木云農(nóng)£口1434-301J-4201+:4+:101:4-4201*34303
42、420Hr3r30134-y命令的輸出,把它存到名為calendar的文件中。查看文件的內(nèi)容。截獲了什么?7)截獲calcal-y>calendar|morecalendar8)截獲cal2010命令的輸出,把它存到名為calendar的文件中。查看文件的內(nèi)容。其中有什么內(nèi)容?cal-y2010>calendar|morecalendar2010年12個月的日歷日歷有什么變化?不是2014年,變成了2010年的了步驟4:防止使用重定向的時候覆蓋文件。在bashshell中,一個叫做noclobber的選項(xiàng)可以用來設(shè)定防止在重定向的過程中覆蓋文件??梢栽诿钚兄惺褂?set-onoc
43、lobber命令來完成。o代表選項(xiàng)。為了重新激活clobber特性,使用$set-onoclobber;撤消則用set+onoclobber。如果你使用的是cshshell,為了激活/撤消Cshell中的clobber特性,使用setnoclobber和unsetnoclobbero1)輸入命令,打開shell中的noclobber選項(xiàng)。輸入什么命令?set-onoclobber2)輸入命令ls-l>homedir.list,結(jié)果是什么?bash:homedir.list:cannotoverwriteexistingfile.因?yàn)閏lobber選項(xiàng)防止了重定向過程覆蓋文件3)輸入命令l
44、s-l>homedir.list2,結(jié)果是什么?不能重定向步驟5:向現(xiàn)有的文件追加輸出。如果想向一個現(xiàn)有的文件追加(添加到末尾)文本而不是覆蓋它,可以使用雙右尖括號(>>)。這個選項(xiàng)當(dāng)文件不存在的時候,會創(chuàng)建一個新文件,或者追加到已有文件。追加命令的格式是:command>>file1)輸入命令,顯示"HappyBday”一行字,使用重定向符號截獲輸出,把它存到叫做bday4me的文件中。使用什么命令?echo"HappyBday">>bday4me2)輸入命令,顯示“YOURNAME一行字,使用雙重定向符號,把輸出追加到
45、bday4me文件中。查看bday4me文件的內(nèi)容。其中有什么?echo"YOURNAME>>bday43)輸入命令,顯示您出生年月的日歷(如果在1985年的6月出生,輸入cal61985),使用雙重定向符號,把輸出追加到bday4me文件中。使用什么命令?cal061985>>bday4me4)查看bday4me文件的內(nèi)容。注意這3個命令的輸出在bday4me文件中已經(jīng)被組合起來了。您是在一周中的哪一天出生的?周_2. 使用管道符號步驟6:把命令的輸出導(dǎo)入到另一個命令中。1)使用管道元字符,發(fā)送ls-l命令的輸出,作為more命令的輸入(注意:如果在當(dāng)前目錄
46、中沒有太多的文件,使用/etc目錄獲取長列表)。把輸出作為more命令的輸入的時候,得到什么結(jié)果?輸入命令ls-l|more結(jié)果以一屏一次的方式顯示在屏幕上2)查看使用lsT|mo命令列出來的文件,注意創(chuàng)建或修改的日期。為了查看在同一個月被創(chuàng)建或修改的文件或目錄的列表,可以使用grep命令對那個月進(jìn)行搜索。當(dāng)月份顯示在列表中的時候,指定它(例如:Oct)。輸入命令ls-1|grepOct(或者想查找的月份)。結(jié)果是什么?只顯示10月的目錄3)目錄總是4096字節(jié)大小。輸入命令ls-1|grep4096。產(chǎn)生的列表是什么4096字節(jié)大小的目錄顯示20143430134張?jiān)讫?0143430134
47、張?jiān)讫?0143430134張?jiān)讫?20143430134張右龍20143430134張有龍20143430134張啟龍20143430134誨云龍20143430134張?jiān)讫?0143430134張?jiān)讫?lt;J20143430134張?jiān)讫?0143430134張?jiān)讫?0143430134張?jiān)讫?00RMHatLinuxIII|J5_*忡令日臺.4司.W%m北LlgHhi翼2i:件簡辨國終辯轉(zhuǎn)旬回鄢期rg偵lowIhoatF*U1frep40116druxr*rx2rocIroot400G5f2&14:51bindiuwrri2rouIjvvI40駒5月301§:29clm
48、vddiidiwa-牝-a55cquitqvt5月3104;2BticdiwuFLaW2rouituut"拓5月W22:47flOdivacrrLafirocIjqbt40955月3014:50liunrdrwrrr-A2rooirunt409。20(l'3-D|25iniIrddmxrrrr9roolroot40965月2814;51libdiwrrr2roo1t<s>d1:409SMJ03-0I-2Sraisediwcr-xr-xGrouitodt40935月3104:24mildiwxr-sLr-ji2rou1tout40962003-01-25optdrwxr-xr-3.2rou1tuut40H65月301R:13prxcticediwxb-ji14rou1mut40365H31研;38rglTdiuxo-rwlIDrouIImut40365H3106hipdiwirjit-a15rouIIivuL40965月25;40usrdimrir-xJ7rovIivuL4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年碳鋼長接桿項(xiàng)目投資可行性研究分析報(bào)告
- 2025年軟磁鐵氧體用氧化鎂項(xiàng)目可行性研究報(bào)告
- 道路基礎(chǔ)建設(shè)工程EPC總承包模式實(shí)施方案
- 中國機(jī)械療法器具行業(yè)發(fā)展運(yùn)行現(xiàn)狀及投資潛力預(yù)測報(bào)告
- 停車用地合同范本
- 代建工程合同范例
- 2025年度房地產(chǎn)開發(fā)合同終止及購房退款協(xié)議
- 農(nóng)村壘墻養(yǎng)殖合同范本
- 剪輯崗位合同范例
- 買賣火車罐合同范例
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- FZ/T 54007-2019錦綸6彈力絲
- DB11-T 291-2022日光溫室建造規(guī)范
- 外貿(mào)業(yè)務(wù)員面試試卷
- 紀(jì)檢知識答題測試題及答案
- 人教版八年級人文地理下冊知識點(diǎn)整理(2021版)
- 道教系統(tǒng)諸神仙位寶誥全譜
- 中國經(jīng)濟(jì)轉(zhuǎn)型導(dǎo)論-政府與市場的關(guān)系課件
- 食品經(jīng)營操作流程圖
- 新視野大學(xué)英語讀寫教程 第三版 Book 2 unit 8 教案 講稿
- 村務(wù)公開表格
評論
0/150
提交評論