【精品】Linux实验指导书.doc_第1页
【精品】Linux实验指导书.doc_第2页
【精品】Linux实验指导书.doc_第3页
【精品】Linux实验指导书.doc_第4页
【精品】Linux实验指导书.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

【精品】Linux实验指导书 1、实验目的学习和掌握Linux的基本命令。 2、实验内容和步骤步骤1以user_login用户身份并使用tel登录Linux服务器,按照提示创建自己的账户和口令。 步骤2使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。 步骤3使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。 _步骤4在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp源文件目的目录)。 察看当前目录下的passwd文件的属主和文件权限。 _步骤5尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容(可使用echo“字符串”文件的命令),看看操作能否成功,如果不能成功,请说明原因。 用cat命令浏览文件password的内容,用more命令进行浏览翻页操作,再用less命令浏览文件的内容。 比较这几个命令的不同之处More:Less:按Q返回_步骤6用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为test.txt,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。 尝试用chomd将文件权限为“-rw-”。 看看能否成功,不成功,请说明原因。 _mv passwdtest.txt再用dir查看,结果为test test.txt_步骤7用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。 (想一想有没有一条命令将目录及目录下的所有文件删除,写出这条命令)删除test命令为rmdir/home/wh/test_步骤8使用ps命令查看当前系统内的进程,并利用man命令获取ps命令的参数,写出获取当前终端进程执行情况的ps命令。 _步骤9使用df命令查看当前系统已安装的文件系统的空间使用情况,记录结果。 _步骤10使用du命令查看用户的工作目录占用了多少空间,记录结果。 _步骤11使用free命令查看内存资源的使用情况,记录结果。 _f_步骤12使用man获取tar和gzip的帮助信息,尝试将test目录下的文件打包并压缩,然后到另外一目录tmp下解包,写出这几条命令。 _步骤13尝试执行“lsltmp”,看看这条命令的执行会出现什么结果,解释一下这条命令。 _步骤14尝试执行find/usr/src-name*.c-print|xargs grep“#include”,看看这条命令的执行会出现什么结果,解释一下这条命令。 _步骤15执行cal和date命令,说说这两条指令的用途。 _步骤16执行命令clear和logout,退出系统。 (想一想有没有其他的方法,写出这种方法)_步骤17执行命令shutdown,关闭系统。 (想一想有没有更简单的命令,写出这条命令)_ 3、实验结论_实验二简单Shell程序设计 1、实验目的 (1)学习和掌握vi器的基本使用方法。 (2)学习和掌握编写简单的shell程序。 2、实验内容和步骤2.1vi的使用步骤1以root用户身份登录进入Linux系统。 步骤2启动Vi,切换到输入模式,输入一段英文This iaan exercise!We useVi toedit it.Left,down,up,right步骤3尝试匹配其中的一串字符,写出这命令及执行结果。 _步骤4尝试替换其中的一串字符,写出这命令及执行结果。 _步骤5尝试复制/删除其中的一行或几行文本,写出命令及执行结果。 _步骤6尝试复制/删除其中的一个单词或几个字符,写出命令及执行结果。 _步骤7尝试使用鼠标复制文本,写出命令及执行结果。 步骤8尝试存盘退出操作,写出命令。 _2.2简单的shell程序步骤1使用Vi将程序清单2-1的程序输入。 步骤2尝试运行该程序,如果不能运行,原因是什么,怎样修改。 _步骤3执行程序,写出程序的执行结果。 _步骤4阅读程序,掌握shell函数的编写方法,补全函数file_run。 _步骤5修改程序中的函数uers(),使得显示在线用户时不分行。 (提示可以使用循环,对每个在线用户分别处理。 )_ 3、实验结论_ 4、程序清单清单2-1menu MYDATE=date+%d/%m/%yTHIS_HOST=hostname-sUSER=whoamifile_run()echoyou mustplete ituers()echothere arewho|wc-lusers onlineecho-ewho arenwho|awkprint$1while:do tputclear catread CHOICEcase$CHOICE in1)ls-l|awk/d/print$8;2)file_run;3)uers;H|h)cat0)while(nread=read(in,&c,sizeof(c)0)/write(out,block,nread);write(out,&c,nread);/程序清单3-3#include#include#include#include#includechar buf1=abcdefghij;char buf2=ABCDEFGHIJ;void err_exit(char*err_s)perror(err_s);exit (1);int main(void)FILE*fp;if(fp=fopen(hole.file,w)=NULL)err_exit(file openfail!);if(fwrite(buf1,sizeof(buf1),1,fp)!=1)err_exit(file writebuf1error!);if(fseek(fp,40,SEEK_SET)=-1)err_exit(fseek error!);if(fwrite(buf2,strlen(buf2),1,fp)!=1)err_exit(file writebuf2error!);fclose(fp);/程序清单3-4#include#include#include#include#includechar buf1=abcdefghij;char buf2=ABCDEFGHIJ;void err_exit(char*err_s)perror(err_s);exit (1);int main(void)int fd;if(fd=open(hole.file,O_WRONLY|O_CREAT/*|O_APPEND,0644*/)=-1)err_exit(file openfail!);if(write(fd,buf1,10)!=10)err_exit(file writebuf1error!);if(lseek(fd,40,SEEK_SET)=-1)err_exit(lseek error!);if(write(fd,buf2,10)!=10)err_exit(file writebuf2error!);实验四Linux下进程操作与进程间通信 1、实验目的 (1)学习和掌握fork等系统调用的基本使用方法。 (2)利用Linux中的管道实现父子进程间的同步。 2、实验内容与步骤步骤1使用Vi将程序清单4-1的程序输入、编译并运行,学习和掌握fork的基本调用方法。 步骤2使用Vi将程序清单4- 2、4-3和4-4的程序输入、利用g分别编译这三个程序,写出编译命令和编译结果,如果不成功,尝试利用gdb调试。 _步骤3写出编译这三个程序的makefile,然后利用make进行编译,谈谈这么做的好处。 _步骤4运行这三个程序,写出运行结果。 _步骤5屏幕上显示出的执行结果是哪一个进程执行的结果?_步骤6父进程中的printf有向屏幕输出吗?为什么?_步骤7利用父子进程间的管道通信方式,改写实验3步骤6要求的程序。 要求启用两个进程,其中父进程接受用户对文件的操作命令然后通过管道发给子进程,子进程完成对文件的实际操作。 3、实验结论_ 4、程序清单/程序清单4-1#include#include#includeerr_exit.hint global=5;int main(void)pid_t pid;char*string=these arevalues before fork:;int local=10;printf(beforefork*nn);if(pid=fork()0)err_exit(fork error);if(pid=0)string=I amchild.;printf(nMy pidis%d,%snpid=%dn global=%dn local=%dn,getpid(),string,pid,global,local);global+;elsestring=I amparent.;printf(nMy pidis%d,%snpid=%dn global=%dn local=%dn,getpid(),string,pid,global,local);local+;printf(%sn Now,global=%d,local=%dn,string,global,local);exit(EXIT_SUCCESS);/清单4-2管道程序#define STD_INPUT0#define STD_OUTPUT1int fd2;main()static charprocess1=”father”,process2=”child”;pipe(fd);pipeline(process1,process2);exit (1);pipeline(char*process1,char*process2)int i;if(i=fork()=-1)perror(“process forkerror!”);exit (1);if(i)close(fd0);close(STD_OUTPUT);dup(fd1);close(fd1);execl(process1,process1,0);/用程序father覆盖当前程序printf(“father failed.n”);else/定义标准输入设备描述符/定义标准输出设备描述符/定义管道/调用自定义函数pipeline()/程序结束/创建进程,失败退出/关闭管道输入描述符/关闭标准输出描述符1/指定标准输出描述符1为管道写指针/关闭原始管道写指针/execl()执行失败清单4-3father.c main()static charstring=“Parent isusing pipewrite.”;int len;len=sizeof(string);write(l,string,len);printf(“parent,parent,parentnnn”);exit (0);清单4-4chi ld.c main()char output30;read(0,output,30);printf(“%sn child,child.n”,output);return (0);exit (2);close(fd1);close(STD_INPUT);dup(fd0);close(fd0);execl(process2,process2,0);printf(“child failed.n”);/关闭管道输出描述符/关闭标准输入描述符0/指定标准输入描述符0为管道读指针/关闭原始管道读指针/用程序child覆盖当前程序/execl()执行失败/程序结束/*将string中的内容写入管道中*/*从管道中读数据并存入output中*/实验五Linux线程的使用 1、实验目的学习和掌握Linux线程的创建以及同步方法。 2、实验内容和步骤步骤1输入程序5-1,编译并运行写出执行结果。 _步骤2仔细研读代码,描述pthread_create函数中各个参数的意义,并给出线程的入口函数的调用方法,描述两线程间参数传递的方式。 _步骤3打开注释掉的全局变量aa及操作aa的相关代码,回答这跟进程有什么不同。 _步骤4输入程序5-2,编译并运行,写出运行结果。 _步骤5仔细研读代码,描述利用信号量实现线程间同步调用方法。 _步骤6学习并使用线程间的同步方法,重新改写实验3步骤6要求的程序。 要求启用两个线程,其中主线程接受用户对文件的操作命令然后发给子线程,子线程完成对文件的实际操作(注意线程间的同步)。 3、实验结论_ 4、程序清单/程序清单5-1#include#include#include#includevoid*thread_function(void*arg);int main()int res;/int aa=100;pthread_t a_thread;void*thread_result;int share_int=10;res=pthread_create(&a_thread,NULL,thread_function,(void*)&share_int);sleep (5);share_int=-10;if(res!=0)perror(Thread creationfailed);exit(EXIT_FAILURE);printf(Waiting forthread to finish.n);res=pthread_join(a_thread,&thread_result);if(res!=0)perror

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论