linux并发程序设计实习报告p_第1页
linux并发程序设计实习报告p_第2页
linux并发程序设计实习报告p_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实习报告:Linux并发程序设计学生姓名:张云龙班级:12软工A2学号:一、实习内容1、Linux进程控制调试上面7.1Linux进程控制的各程序代码。1示例:使用系统调用fork(),创建新进程。一在linux中打开vi编辑器,新建一个c程序,名字叫做7.1。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gccp7.1.cp7.1对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.1对程序进行编译执行!三通过测试,可以很清楚的知道,一个进程有2801个子进程!2示例:使用系统调用getpid(),获

2、得进程标识符一在linux中打开vi编辑器,新建一个c程序,名字叫做7.2。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gccp7.2.cp7.2对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.2对程序进行编译执行!三通过测试,可以很清楚的知道,现在正在运行的进程的ID是2813!3示例:fork()创建子进程后,子进程在屏幕上显示子进程标识符与父进程标识符一在linux中打开vi编辑器,新建一个c程序,名字叫做7.3。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。

3、然后在提示符$后输入命令:gccp7.3.cp7.3对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.3对程序进行编译执行!三通过测试,可以很清楚的知道,现在正在运行的进程的ID是2834!父进程2863个!4使用execl()系统调用,运行目录列表程序ls。一在linux中打开vi编辑器,新建一个c程序,名字叫做7.4。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gcc-g7.4.c-o7.4对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.4对程序进行编

4、译执行!三通过测试,可以很清楚的知道,该程序实际上是实现了”ls-l”的命令!5功能改用execv()系统调用完成。一在linux中打开vi编辑器,新建一个c程序,名字叫做7.5。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gcc-g7.5.cp7.5对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.5对程序进行编译执行!三通过测试,可以很清楚的知道,该程序实际上是实现了”ls-l”的命令!6使用系统调用fork()与exec,使父子进程运行完全不同的程序。一在linux中打开vi编辑器,新建一个

5、c程序,名字叫做7.6。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gccp7.6.cp7.6对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.6对程序进行编译执行!三通过测试,可以很清楚的知道,该程序实际上是实现了”ls-l”的命令!7使用系统调用exit(),终止进程。一在linux中打开vi编辑器,新建一个c程序,名字叫做7.7。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gcc-g7.7.cp7.7对程序进行调试!若是没有任何的错误

6、和提醒的话,那么在接着出现的提示符$后输入命令:./7.7对程序进行编译执行!三通过测试,可以很清楚的知道,该程序实现了把进程为18188的程序退出的命令!8使用wait()系统调用,实现父子进程的简单同步。一在linux中打开vi编辑器,新建一个c程序,名字叫做7.8。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gccp7.8.cp7.8对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.8对程序进行编译执行!三。在等待了大约十秒钟之后,会弹出如下的结果图四。通过测试,我很活楚的知道,该程序实际上

7、是实现了进程等待的命令9系统调用sleep()一在linux中打开vi编辑器,新建一个c程序,名字叫做7.9。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gcc-g7.9.c-o7.9对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.9对程序进行编译执行!三。在等待了大约一分钟之后,会弹出如下的结果图四。通过测试,我很活楚的知道,该程序实际上是实现了子进程开始睡眠,而父进程等待的命令也就是所谓的程序的挂起!2、Linux进程通信调试上面7.2Linux进程通信的各程序代码。事例:在父子进程间建立管

8、道,且子进程向父进程输送信息。一在linux中打开vi编辑器,新建一个c程序,名字叫做7.10。然后将上面的程序代码输入其中!在将程序完整的输入之后!保存程序,并退出!二。然后在提示符$后输入命令:gcc-g7.9.c-o7.9对程序进行调试!若是没有任何的错误和提醒的话,那么在接着出现的提示符$后输入命令:./7.9对程序进行编译执行!并完成并发程序设计的实验内容:并发程序的设计关键是使用创建进程的系统调用,使一个程序运行时可以生成几个同时运行的程序,如果程序中没有创建进程的动作则为顺序程序设计。本实验中的并发程序例子完成两个程序child和father之间的数据传递工作,具体做法分为四步。

9、步骤1:编制并发程序pipeline.c。单击红帽子,在“GNOM麝助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入程序并保存为pipeline.c。在该程序中定义管道和文件描述符,并且创建子进程child。该程序用到的系统调用有pipe()、dup()、fork()、close、execl()、exit,它们的功能分别是建立管道、复制文件描述符、创建进程并使子进程与父进程有相同的程序正文、关闭文件描述符、用指定文件覆盖调用程序、撤销当前进程清单4-5pipeline.c/定义管道程序defineSTD_INPUT0/定义标准输入设备描述符defineSTD_OUTPUT1/定义标

10、准输出设备描述符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);/定义管道/调用自定义函数pipeline()/程序结束/创建进程,直到创建成功为止/关闭管道输入描述符/关闭标准输出推f述符1/指定标准输出描述符1为管道写指针/关闭原始管道写指针/用程序father覆盖当前程序/execl()执行失败/关闭管道输出描述符/关闭标准输入描述符0/指定标准输入描述符0为管道读指针/关闭原始管道读指针/用程序child覆盖当前程

12、序/execl()执行失败/程序结束步骤2:编制“管道写”程序father.c作为父进程的一部分工作。其内容如下:单击红帽子,在“GNOM麝助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入程序并保存为father.c。清单4-6father.cmain()“staticcharstring="Parentisusingpipewrite.”;intlen;len=sizeof(string);write(l,string,len);/*将string中的内容写入管道中*/printf("parent,parent,parentn");exit(0);步

13、骤3:编制“管道读”程序child.c作为子进程的一部分工作。其内容如下:child.co单击红帽子,在“GNOM麝助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入程序并保存为清单4-7child.cmain()/*从管道中读数据并存入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。若运行不成功,则应该用文本编辑器对源程序进行修改调试。运行显示结果为:"仙"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系统。步骤2:访问命令行。单击红帽子,在“GNOMIB助”菜单中单击“系统工具”-“终端”命令,打开“终端”窗口。步骤3:回顾系统进程概念。每个运行的程序都会创建一个进程,进程分配到一个唯一的进

17、程标识符(PID)。PID被系统用于标识和跟踪进程,直到进程结束。操作系统内核管理所有进程的初始化和终止。每一个进程都要求系统资源(例如CPU时间和RAMS间)在其中工作。当进程启动的时候,操作系统把系统资源分配给每个进程,当进程终止的时候,系统回收这些资源。在Linux系统启动的时候,首先启动的两个进程是sched(调度)和init(初始化),它们管理着其他进程。Linux系统中有几种不同类型的进程:守护进程:由Linux内核启动的进程,为了特定目的而存在。例如,lpsched守护进程存在只是为了处理打印作业。父进程:派生其他进程的进程是父进程。一个叫做init的守护进程是第一个调用的进程。

18、每一个进程,除了init之外,都有一个父进程。子进程:由其他进程派生出来的进程叫做子进程。孤儿进程:在进程返回输出之前,它的父进程结束了,这样的进程叫做孤儿进程。偶进程:子进程没有带着输出返回给父进程。这样的进程在系统中变成丢失的进程。使用此前的信息,完成以下填空:1)Linux系统中,几乎每一个启动的进程,都会由内核分配一个唯一的进程标识符(PID),用于跟踪从进程启动到进程结束。2)当启动新进程的时候,内核也给它们分配系统资源,如内存和资源03)永远不向父进程返回输出的进程叫做偶进程。4)由父进程派生出来的进程叫做子进程。5)父进程是一个派生另一个进程的进程。6)运行用于提供服务的Linu

19、x系统进程是守护进程。7)如果父进程在子进程之前结束,它创建了一个孤儿进程步骤4:回顾ps命令和信息。ps命令用于列出当前系统中运行的进程。如果一个进程耗时太长,或者看上去好像已经终止了,表现为一个终端窗口不再响应或挂起,通常需要使用ps查看系统中的进程。通过列出进程,可以查看初始化进程的命令或程序的名字,以及所有它派生出来的子进程。通过多次执行ps命令,查看进程的时间进程占用的CPU时间,可以检查一个进程是否还在运行。如果时间小再增长,那么进程可能已经终止了。如果进程占用太长的时间或者已经停止,可以使用ps命令检查进程的进程ID(PID),然后杀死进程。ps命令的输出将显示PID号和与其相关

20、的命令或程序。PID号通常用于终止一个进程。ps命令(ps-options)的3个主要选项如下表所示。表3-5ps命令选项ps选项意义功能Ps无选项显示当前shell或终端窗口中,当前用户的进程信息ps-e每一个显示系统中每一个进程的信息psf完全产生一个完全列表,给出每个进程的所有可用信息ps-uuserid用户显示特定用户的所有进程基本的ps命令显示在当前shell中的进程信息,用户只能够查看在这个终端窗口中初始化的进程。输入ps命令,将结果填入表3-6中。表3-6实验记录PIDTTYTIMECMD?2367?pts/0?00:00:00Bash?3001?pts/0?00:00:00?p

21、s从当前终端窗口中,练习使用给出的每个选项的ps命令。输入ps-f命令,显示运行在系统中的某个进程的完全信息,填入表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进程的优先级STIME进程的启动时间TTY控制进程终端的终端举型TIME进

22、程使用的CPU时间的数量CMD命令名守护进程(执行的程序的名字)步骤5:列出系统中运行的所有进程。输入ps-ef命令,显示运行在系统中的各个进程的完全信息。执行该命令,并与ps-f命令的输出结果对照,一致吗?有何不同?不一致!用户类型增加了!注意分析当前终端窗口中的输出结果:a. 显示了多少个进程?64b. 进程ID的PID是什么?程的进程标识号。PID可以用来杀死进程c. 启动进程的命令(CMD)是什么?schedd. 请观察,什么命令的PID号是1?intite. 再次运行ps-ef命令,计算进程的数目:然后执行下列命令把输出结果输入到wc命令中:ps-ef|wc-l第一个数字显示的是行的

23、数目,也是进程的数目:4执行manps命令,可以打开Linux用户命令手册,了解ps命令的用法,输入wq命令可退出用户手册的阅读。man命令可以执行吗?结果如何?不可以步骤6:根据命令名搜索特定的进程。为了终止一个进程,必须找到该进程的PID。大多数运行的系统中,有上百个进程在运行,ps-ef的列表可能很长。如果知道启动进程的执行程序的名字,可以更快地找到PID。通过把ps命令的输出结果输入到grep中,可以搜索想要终止的特定进程,确定正确的PID。grep命令可以在其他命令的输出中搜索所有类型的特征字符串。-l(长的输出)选项将显示和找到的PID相关的进程的名字;-e选项显示PID和初始化命

24、令的名字。a. 单击红帽子,在“GNOME助”菜单中单击“游戏”-“堆麻将”命令,打开“堆麻将”游戏。b. 在当前的终端窗口中,执行命令:ps-e|grepmahjongg(“堆麻将”游戏的进程名是“mahjongg”),查找和“堆麻将”游戏调度守护进程相关的所有进程。c. 显示了多少个相关进程?2d. 显示进程中最小的进程ID号是多少?2818c.在当前终端窗口中执行命令:pgrep-lmahjongg查找所有和“堆麻将”游戏调度守护进程相关的进程。ps和pgrep命令输出之间有什么不同?ps-e|grepmahjongg命令比pgrep-lmahjongg命令输出结果多显示了TTY和TIM

25、E步骤7:确定一个要终止的进程。当试图终止一个程序,或者释放一个挂起的终端窗口的时候,杀死和不响应的应用相关的PID可能还是不够的,一般需要杀死那个进程的父进程,在少数情况下,甚至要杀死父进程的父进程。为了沿着层次结构,从子进程追溯到派生它们的父进程,必须能够查找PID和PPIDo必须首先确定最低级不响应进程的PID。通常,可以试着去杀死那个进程。如果这样做不能够停止那个进程,可能需要杀死它的父进程。杀死父进程将杀死所有它派生的子进程。杀死一个父进程也比杀死几个子进程快得多。1)在GNOME前终端窗口中,输入ps命令。有多少进程正在运行?为什么只有这么少的进程?有2个进程正在运行。因为单前只运

26、行bash和ps这两个程序2)正在运行的进程的名字是什么?它表示什么?bash和ps。bash是打开终端后自动启动的程序,ps是当前执行的命令。3)这个进程的PID是多少?2836和28684)在bashshell中输入命令csh,打开一个Cshell会话,当前系统的会话提示符是什么?5)输入ps-f命令,显示在当前shell中运行的进程的所有信息。现在什么进程正在运行?bash,-sh和ps-f_6)bash的PID是-sh(csh)的PPID吗?M7)输入命令sleepl000&,创建一个进程,把执行挂起1000秒(大约15分钟)。&表示在后台运行命令,返回shell提示符

27、,这样您可以继续工作。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进程现在是什么类型的进程?jjffi儿进程步骤8:使用kill命令终止一个进程。信号用于终止、挂起和继续进程。有时候使用Ctrl+c可以终止一个不响应的进程。这样向进程发送一个中断(INT)信号,终止它及所有它派生的子进程。kill命

28、令提供了一个终止不想要的命令进程的直接方法。当想停止一个运行了很长时间的命令的时候,或者当需要终止一个不能够正常退出的进程的时候,它很有用。指定PID正常地杀死一个进程。kill-signalprocess-id为了使用kill命令终止一个进程,应该首先键入ps找出进程的PID,然后键入kill紧跟着PID。如果使用kill而没有指定信号,贝M言号15(SIGTERM)将被发送给特定PID号的进程。这叫做软杀死,通常终止了进程。如果可能,最好软杀死进程,这样它可以正确地关闭文件,温和地终止进程。如果需要强制终止一个进程,可以使用带-9选项的kill命令。这个选项叫做强制杀死,当shell对所有

29、其他终止信号都不响应的时候,需要使用它来杀死shell0kill-9process-id注意:对于shell之外的进程,把kill-9(SIGKILL)作为最后的选项,因为它是一种生硬的方法,不允许正确的进程终止。a. 输入命令ps-f,显示在当前shell中运行的进程的完整信息。现在什么进程正在运行?bash和ps-fb. 因为sleep进程现在是一个孤儿进程,已经被init进程(PID#l)收养,输入命令,对sleep的PID执行软杀死。如果sleep已经终止(超过15分钟),则重复步骤7中的8)、9)操作,然后软杀死sleep程序。再次输入ps-f命令。现在什么进程正在运行?bash和p

30、s-f步骤9:按照用户查找和终止一个进程。ps命令可以带-u(用户)选项使用,查找指定用户的进程。这个命令比ps-ef使用得更多,因为一般只能够管理属于自己的进程。我们可以通过用户登录名或者UID号来查找用户的进程。用户只能够终止自己的进程,但是超级用户可以终止系统中所有运行的进程。ps-ulogin-ID或UID1)启动计算器和“堆麻将”游戏GNOME用程序。2)使用带-u选项的ps命令,查找以登录ID(例如,userX)或者数字UID(例如,1004)运行的所有进程。计算器应用程序的PID是什么?0153)使用软杀死终止计算器应用程堆麻将”是否仍然在桌面上运行?是4)使用ps-u命令组合g

31、rep,查找“堆麻将”程序的PID号,而不是使用ps-u查找整个列表。您使用什么命令?提示:猜猜“堆麻将”程序的命令名中可能有哪个字母,使用grep搜索那些字母。ps-u|grepmahjongg5)终止“堆麻将"程序。它是否还在桌面上运行?否6)退出Cshell。步骤10:删除所有在本实验中创建的文件和目录。4、Linux命令接口的重定向与管道1. 使用重定向标准输出符号步骤3:重定向标准输出,创建一个文件。右尖括号或称大于符号(>)把命令的输出发送到一个文件中:使用单个右尖括号,当指定文件名不存在的时候,将创建一个新文件;如果文件名存在,它将被覆盖。(注意:命令、重定向符号

32、和文件名之间的空格是可选的)。重定向标准输出命令的格式是:command>file1)为核实当前所在目录位置,使用什么命令?w如果当前位置不在主目录中,使用什么命令可以改变到主目录中?cd/2)如果希望把文件和目录列表截获,存储为主目录中的一个文件,这样可以追踪主目录中有什么文件。使用什么命令,把长文件列表的输出重定向,创建一个叫做homedir.list的文件。ls>homedir.list_3) 新文件homedir.list被放在哪里?根目录使用ls命令核实新文件存在。4)使用什么命令,以一次一屏的方式,来查看刚才创建的文件内容?_lsl|morehomedir.list20

33、14343013420143+30134罚14343013420143430134AO张云/张云龙张奁龙张云龙20143430134201434301342014343013420143430134茂云丸弗云龙张云建张云龙Re<1.Inux20143430134201434301342014343013420143430134张云龙张云龙张芸龙张云龙s航面-司回5)使用head命令截获homedir.list文件的前10行,通过重定向,创建一个叫做dhomedir.list-top-10的新文件。应该使用什么命令?head-10-l|morehomedir.list>dhomedi

34、r.list-top-10使用more命令查看文件的内容。sdhomedir.list-top-10LlnuMtail-10homedir.list>dhomedir.list-top-1020143430134201434301342014343013420143430134张云龙张云庞张云龙20143430134201434301342014343013420143430134强云龙张云龙张云龙2014343013420143430134201434301342014343013+弥云龙涨云龙张云龙张云龙张<龙张K龙张若龙张云龙眼云龙张云龙张云龙张云龙张云龙2O14343D13

35、42014343013420143430134201434301342014343013420143430134201434301342014343013420143430134201434301342014343013420143430134住“冬1曰6)使用tail命令,截获homedir.list文件的最后10行,通过重定向,创建一个叫做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卫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卫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网124mu矿4rwkrr_m17rciolraolS月#导Z2:4va?-dhCMiii1dEri,1i*Iiop10XE'b】.b-oo-1vhinEdirdfveIc!fdUlilUlHrhreiiTMlid'1imiiniIrd

41、Ilih|iu-D1hu»i/ft兰!使用more命令查看文件的内容。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亦春成*-£。】43心。134我云源2014321013志五席一口4343g34*声朋截获cal-y命令的输出,把它存到名为calendar

42、的文件中。查看文件的内容。截获了什么?cal-y>calendar|morecalendar8)截获cal2010命令的输出,把它存到名为calendar的文件中。查看文件的内容。其中有什么内容?cal-y2010>calendar|morecalendar2010年12个月的日历日历有什么变化?不是2014年,变成了2010年的了步骤4:防止使用重定向的时候覆盖文件。在bashshell中,一个叫做noclobber的选项可以用来设定防止在重定向的过程中覆盖文件。可以在命令行中使用$set-onoclobber命令来完成。代表选项。为了重新激活clobber特性,使用$set-o

43、noclobber;撤消则用set+onoclobber。如果你使用的是cshshell,为了激活/撤消Cshell中的clobber特性,使用setnoclobber和unsetnoclobber。1)输入命令,打开shell中的noclobber选项。输入什么命令?set-onoclobber2)输入命令ls-l>homedir.list,结果是什么?bash:homedir.list:cannotoverwriteexistingfile.因为clobber选项防止了重定向过程覆盖文件,结果是什么?输入命令ls-l>homedir.list2不能重定向步骤5:向现有的文件追加

44、输出。如果想向一个现有的文件追加(添加到末尾)文本而不是覆盖它,可以使用双右尖括号(>>)。这个选项当文件不存在的时候,会创建一个新文件,或者追加到已有文件。追加命令的格式是:command>>file1)输入命令,显示“HappyBday”一行字,使用重定向符号截获输出,把它存到叫做bday4me的文件中。使用什么命令?echo“HappyBda,>>bday4me2)输入命令,显示“YOURNAMEL行字,使用双重定向符号,把输出追加到bday4me文件中。查看bday4me文件的内容。其中有什么?echo“YOURNAME>>bday4me

45、3)输入命令,显示您出生年月的日历(如果在1985年的6月出生,输入cal61985),使用双重定向符号,把输出追加到bday4me文件中。使用什么命令?cal061985>>bday4me4)查看bday4me文件的内容。注意这3个命令的输出在bday4me文件中已经被组合起来了。您是在一周中的哪一天出生的?周2. 使用管道符号步骤6:把命令的输出导入到另一个命令中。1)使用管道元字符,发送ls-l命令的输出,作为more命令的输入(注意:如果在当前目录中没有太多的文件,使用/etc目录获取长列表)。把输出作为more命令的输入的时候,得到什么结果?输入命令ls-l|more结果

46、以一屏一次的方式显示在屏幕上2)查看使用ls-l|more命令列出来的文件,注意创建或修改的日期。为了查看在同一个月被创建或修改的文件或目录的列表,可以使用grep命令对那个月进行搜索。当月份显示在列表中的时候,指定它(例如:Oct)。输入命令ls-1|grepOct(或者想查找的月份)。结果是什么?只显示10月的目录3)目录总是4096字节大小。输入命令ls-1|grep4096。产生的列表是什么4096字节大小的目录显示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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论