




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1 RedHat Linux常用命令使用【实验目的】1、 了解linux的基本命令,熟练掌握其基本操作;2、 掌握一些常用的Linux命令的使用方法。【实验要求】1、 了解RedHat Linux获得的方法以及怎样在虚拟机上进行安装;2、 复习一些常用Linux命令的使用方法,掌握其功能和使用时的选项和参数。【实验步骤】一、RedHat Enterprise Linux 4的启动启动VMWare虚拟机,即可看到Linux的启动画面,实验室的root密码统一设定为123456。二、常用的Linux命令使用启动到Linux界面以后,在桌面上右键打开终端,即可进入命令输入的终端界面。请在实验过程中输入正确的命令和选项参数,完成以下功能:1:创建自己的账户(如:test)和口令。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命令浏览文件的内容。比较这几个命令的不同之处6:用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为test.txt,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。尝试用chomd将文件权限为-rw-。看看能否成功,不成功,请说明原因。7:用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。(想一想有没有一条命令将目录及目录下的所有文件删除,写出这条命令)。8:使用ps命令查看当前系统内的进程,并利用man命令获取ps命令的参数,写出获取当前终端进程执行情况的ps命令。9:使用df命令查看当前系统已安装的文件系统的空间使用情况,记录结果。10:使用man获取tar和gzip的帮助信息,尝试将test目录下的文件打包并压缩,然后到另外一目录tmp下解包,写出这几条命令。11:尝试执行ls l tmp,看看这条命令的执行会出现什么结果,解释一下这条命令。12:执行cal和date命令,说说这两条指令的用途。13:执行命令clear和logout,退出系统。(想一想有没有其他的方法,写出这种方法)14:用ifconfig命令查看网卡的IP地址和MAC地址。15:执行命令ftp ,使用用户名anonymous和空密码登录,将目录切换到/linux,下载压缩包linux-2.6.10.tar.bz2并解压到当前目录。实验2 Linux文本编辑、Shell编程与网络服务配置【实验目的】1、 学习Linux常用编辑器的使用;2、 学习Linux下Shell编程的基本方法;3、 练习网络服务的配置和管理。【实验要求】1、 复习vi编辑器的使用方法,学习gedit和emacs的使用;2、 复习网络配置和网络服务器的配置和使用的内容。【实验步骤】一、shell编程1 利用vi编辑器编写一个shell脚本程序filemenu:until echo List Directory.1 echo Change Directory.2 echo Edit File.3 echo Remove File.4 echo Exit Menu.5 read choice test $choice = 5 do case $choice in 1) ls; 2) echo Enter target directory read dir cd $dir ; 3) echo Enter file name read file vi $file ; 4) echo Enter file name read file rm $file ; q|Q|5) echo Goodbye; *) echo illegal Option esac 2 调试该程序使其能正常工作,运行之。解释这个程序的功能。二、网络服务配置与管理1 网络文件系统(NFS,NetworkFileSystem)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。2Linux NFS服务器的配置以root身份登陆Linux服务器,编辑/etc目录下的共享目录配置文件exports,指定共享目录及权限等。编辑文件/etc/exports,在该文件里添加如下内容:/home/test 192.168.1.*(rw, sync, no_root_squash)然后保存退出,目录/home/test可改为自选的共享目录。添加的内容表示:允许ip地址范围在192.168.1.*的计算机以读写的权限来访问/home/test目录。/home/test也称为服务器输出共享目录。括号内的参数意义描述如下:rw:读/写权限,只读权限的参数为ro;sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。no_root_squash:NFS服务器共享目录用户的属性,如果用户是root,那么对于这个共享目录来说就具有root的权限。接着执行如下命令,启动端口映射: /etc/rc.d/init.d/portmap start最后执行如下命令启动NFS服务,此时NFS会激活守护进程,然后就开始监听Client端的请求: /etc/rc.d/init.d/nfs start我们可以进行NFS服务器的回环测试,验证共享目录是否能够被访问。在Linux服务器上运行如下命令:mkdir /mnt/nfsmounttnfs 20:/home/test /mnt/nfs (此命令使用的本机IP地址请使用ifconfig命令查看)ls /mnt/nfs如果NFS正常工作,应该能够在/mnt/nfs目录看到/home/test共享目录中的内容。拆卸NFS文件系统的命令 umount /mnt/nfs 。3NFS客户端的配置在Linux服务器设置好后,还需要对客户端进行相关配置。此项任务可以相邻的两台计算机互相完成。mounttnfs 20:/home/test /mnt/nfs (此命令使用的本机IP地址请使用相邻计算机的IP地址)。此时,目标系统端所显示的内容即为Linux服务器的输出目录的内容,即Linux服务器的输出目录/home/test通过NFS映射到了目标系统的/mnt/nfs目录。用户可以用增/删/修改文件的方式来验证实际效果。选作:telnet服务器配置1 以root身份登陆Linux服务器,编辑/etc/xinetd.d/telnet (或krb5-telnet),找到 disable = yes 将 yes 改成 no 。 2激活服务: service xinetd restart 3测试服务: 在windows主机的命令行下输入telnet 虚拟机ip,如果配置正确,系统提示输入远程机器的用户名和密码 Login: PassWord: 注:默认只允许普通用户 4telnet服务限制 telnet是明文传送口令和数据的,如果你对其默认的设置不满意,有必要对其服务范围进行限制。假设你的主机的ip是7,就可以按如下方式设置了。 #vi /etc/xinetd.d/telnet service telnet disable = no #激活 telnet 服务,no bind = 7 #your ip only_from = /16 #只允许 55 这个网段进入 only_from = . #只有教育网才能进入! no_access = 210.45.160. #这两个ip不可登陆 access_times= 8:00-12:00 20:00-23:59 # 每天只有这两个时间段开放服务 . 5telnet root用户的登入 telnet不是很安全,默认的情况之下不允许root以telnet进入Linux主机。若要允许root用户登入,可在普通用户进入后,切换到root用户,拥有root的权限。实验3 Linux开发工具的使用【实验目的】1、 学习gcc的编译方法与使用;2、 学习Linux调试器GDB的使用学习Linux内核编译的方法。3、学习编写makefile文件来进行工程项目管理【实验要求】1、 复习gcc的编译选项和gdb的调试命令;2、 复习makefile文件的编写方法。【实验步骤】一、编译器gcc的使用1 编辑一个C语言程序文件hello.c:#include main()char name20;printf(“Please input your name:”);scanf(“%s”,name);printf(“Welcome %s!n”,name);return 0;2 编译文件:gcc o hello hello.c。3 如果有错误,修改hello.c的内容,然后再次编译,直至没有错误为止。二、用GDB调试程序BUG1 使用文本编辑器输入以下代码greet.c。程序试图倒序输出main函数中定义的字符串,但结果没有显示。#include int display1(char *string);int display2(char *string);main()char string = “Welcome to Linux!”;display1(string);display2(string);int display1(char *string)printf(“The original string is %s n”,string);int display2(char *string1)char *string2;int size,I;size = strlen(string1);string2 = (char *)malloc(size + 1);for(i=0;isize;i+)string2size-i = string1i;string2size+1= ;printf(“The string afterward is %sn”,string2);2使用gcc g的选项编译这段代码,运行生成的可执行文件,观察运行结果。3使用gdb调试程序,通过设置断点、单步跟踪,一步步找出错误所在。4纠正错误,更改源程序并得到正确的结果。三、编写包含多个文件的makefile1 利用编辑器编写两个C语言程序:hello.c #include “hello.,h” int main() printf(“Hello everyone!n”); hello.h #include 2 编辑makefile,如下所示:hello:hello.c hello.hgcc hello.c o hello3 键入 make ,查看结果。4 重新编辑makefile,如下所示:OBJS := hello.oCC := gcchello:$(OBJS)$(CC) $ -o $5 键入 make ,查看结果。实验4 Linux内核编译【实验目的】1、 深入理解Linux内核的组织构成;2、 学习Linux内核编译的方法。【实验要求】1、 复习makefile文件的编写方法;2、 学习Linux内核编译的方法,尝试使用Linux内核版本升级。一、Linux 内核编译1使用 uname rm 或 uname a 命令查看当前系统的Linux内核版本。2 使用ftp命令在上下载内核压缩包linux-2.6.10.tar.bz2并解压到当前目录。tar jxvf linux-2.6.10.tar.bz2cd linux-2.6.103make mrproper 把原来编译产生的垃圾删除4配置内核可以根据需要与爱好使用下面命令中的一个:make config (基于文本的最为传统的配置界面)make menuconfig (基于文本选单的配置界面)make xconfig (基于图形窗口模式的配置界面)make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。选择相应的配置时,有三种选择,它们分别代表的含义如下:“Y” 将该功能编译进内核“N” 不将该功能编译进内核“M” 将该功能编译成可以在需要时动态插入到内核中的模块。 将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。5 make dep (确保关键文件在正确的位置) 这一项在Linux内核2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。6 make clean (确保所有有关文件都处于最新版本状态)7 make zImage (编译压缩形式的内核)在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:make bzImage编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在./arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。8如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:make modules (编译选择的模块)make module_install (将编译后的模块转移到系统标准位置)9 make install上面的命令make install将:(1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接; (2)修改bootloader的配置文件;(3)调用mkinitrd程序创建内核的initrd映象. 10 用编辑器查看/boot/grub/grub.conf配置文件,将其中的hiddenmenu行加上注释标志#11 重新启动Linux系统,注意观察启动后出现的菜单选择项,选择刚编译好的新内核启动。12启动完成后,使用 uname rm 或 uname a 命令查看当前系统的Linux内核版本。实验5 文件系统编程【实验目的】1、 学习Linux对文件系统的操作方法,掌握编程对文件进行操作的方法;2、 学习Linux下proc文件系统的特殊用途,学会利用其查看系统信息。【实验要求】1、 学习编写C语言程序来对文件系统进行操作;2、 学习proc文件系统的使用方法。【实验步骤】一、Linux文件编程1从一个文件中读取最后10KB数据并复制到另一个文件,注意观察缓存大小OFFSET对运行效率的影响#include #include #include #include #include #include #define BUFFER_SIZE 1024#define SRC_FILE_NAME src_file#define DEST_FILE_NAME dest_file#define OFFSET 10240int main()int src_file,dest_file;unsigned char buffBUFFER_SIZE;int real_read_len;src_file = open(SRC_FILE_NAME,O_RDONLY);dest_file = open(DEST_FILE_NAME,O_WRONLY|O_CREAT,644);if(src_file 0 | dest_file 0)write(dest_file,buff,real_read_len);close(dest_file);close(src_file);return 0;2 编译、调试该程序使其能正常工作,运行之。解释这个程序的功能。二、proc文件系统编程1 /proc - 一个虚拟文件系统/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取有关进程的有用信息,在运行中改变设置。与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。proc 文件系统可以被用于收集有用的关于系统和运行中的内核的信息。2下面是一些重要的文件: /proc/cpuinfo - CPU 的信息 (型号, 家族, 缓存大小等) /proc/meminfo - 物理内存、交换空间等的信息 /proc/mounts - 已加载的文件系统的列表 /proc/devices - 可用设备的列表 /proc/filesystems - 被支持的文件系统 /proc/modules - 已加载的模块 /proc/version - 内核版本 /proc/cmdline - 系统启动时输入的内核命令行参数 有一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口。3通过 /proc 中可读写的文件提供了对内核的交互机制。写这些文件可以改变内核的状态。大部分 /proc 的文件是只读的,/proc/sys 目录存放所有可读写的文件的目录,可以被用于改变内核行为, /proc/sys/kernel 目录包含反通用内核行为的信息。例如:$ $ cat /proc/sys/kernel/hostnamemachinename$ echo new-machinename /proc/sys/kernel/hostname$ 以上例子演示了如何修改本机的主机名。4 使用C语言编写一个主机信息输出程序,使用open、close、read等系统调用读取不同的proc文件,获得主机信息,然后输出出来。选作:利用write系统调用修改内核信息并验证。实验6 Linux 进程控制与通信【实验目的】1、 学习编写C语言程序来管理Linux进程;2、 了解Linux下的进程控制和通信机制,掌握Linux下的C语言编程方法。【实验要求】1、 复习Linux进程控制和通信的内容;2、 复习C/C+语言的基本技能和gcc使用的内容。【实验步骤】一、Linux进程控制编程1 利用编辑器编写一个C语言程序forkchild.c :#include #include #include #include int main(int argc,char *argv)pid_t pid,old_ppid,new_ppid;pid_t child,parent;parent = getpid();if(child = fork() 0)fprintf(stderr,%s:fork of child failed:%sn,argv0,strerror(errno);exit(1);else if(child = 0)old_ppid = getppid();sleep(2);new_ppid = getppid();elsesleep(1);exit(0);printf(Original parent:%dn,parent);printf(Child:%dn,getpid();printf(Childs old ppid:%dn,old_ppid);printf(Childs new ppid:%dn,new_ppid);exit(0);2编译运行: gcc o forkchild forkchild.c。编译检查如果有错,则根据出错信息返回第1步修改,直到没有错误为止。3运行该程序:./forkchild 。解释程序运行结果。二、Linux进程通信编程1 利用编辑器编写一个C语言程序pipedemo.c :#include #include #include #define BUFSIZE 4096int main(int argc,char *argv)static const char mesg = Happy new year to you !;char bufBUFSIZE;size_t rcount,wcount;int p_fd2;size_t n;if(pipe(p_fd) 0)fprintf(stderr,%s:pipe failed:%sn,argv0,strerror(errno);exit(1);printf(Read end=fd %d,write end=fd %dn,p_fd0,p_fd1);n = strlen(mesg);if(wcount = write(p_fd1,mesg,n) != n)fprintf(stderr,%s:write failed:%sn,argv0,strerror(errno);exit(1);if(rcount = read(p_fd0,buf,BUFSIZE) != wcount)fprintf(stderr,%s:read failed:%sn,argv0,strerror(errno);exit(1);bufrcount = 0;printf(Read from pipen,buf);close(p_fd0);close(p_fd1);return 0;2编译运行: gcc o pipedemo pipedemo.c。编译检查如果有错,则根据出错信息返回第1步修改,直到没有错误为止。3运行该程序:./pipedemo 。解释程序运行结果。实验7 Linux网络编程【实验目的】1、 学习编写socket程序来进行网络;2、 了解Linux下的网络通信机制,掌握Linux下的socket编程常用函数。【实验要求】1、 复习socket编程的内容;2、 复习C/C+语言的基本技能和gcc使用的内容。【实验步骤】1 利用编辑器编写一个C语言程序listener.c :#include #include #include #include #include #include #include #include #define MYPORT 5000 /* 要连接到的端口号 */ #define MAXBUFLEN 100 /* 能够接收的最长数据 */ main() int sockfd; struct sockaddr_in my_addr; /* 本机的地址信息 */ struct sockaddr_in their_addr; /* 连接这的地址信息 */ int addr_len, numbytes; char bufMAXBUFLEN; if((sockfd = socket(AF_INET, SOCK_DGRAM, 0) = -1) /* 取得一个套接字描述符 */ perror(“socket”); /* 如果取得套接字描述符失败,则给出错误信息,退出 */ exit(1); my_addr.sin_family = AF_INET; /* 主机字节顺序 */ my_addr.sin_port = htons(MYPORT); /* 网络字节顺序,短整型 */ my_addr.sin_addr.s_addr = INADDR_ANY;/* 自动设置为自己的 IP */ bzero(&(my_addr.sin_zero), 8); /* 将结构的其余空间清零 */ if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr) = -1) /* 绑定端口 */ perror(“bind”); /* 如果绑定端口出错,则显示错误信息然后退出 */ exit(1); addr_len = sizeof(struct sockaddr); if (numbytes=recvfrom(sockfd, buf, MAXBUFLEN, 0, (struct sockaddr *)&their_addr, &addr_len) = -1) /* 接收数据 */ perror(“recvfrom”); /* 如果 recvfrom()调用出错,则显示错误信息后退出 */ exit(1); printf(“got packet from %sn”,inet_ntoa(their_addr.sin_addr); /*显示接收到的数据*/ printf(“packet is %d bytes longn”,numbytes); bufnumbytes = 0; printf(“packet contains ”%s“n”,buf); close(sockfd); /* 关闭套接字连接 */
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色铸造工艺-洞察及研究
- 儿童画创作课件
- 儿童理财培养课课件图片
- 社交行为影响定位模型-洞察及研究
- 互动营销执行方案
- 单层楼梯改造方案
- 环保可降解纺织纤维-洞察及研究
- 广州酒店厨房工程方案
- 大型矿山治理方案
- 班级元旦活动策划方案
- 慢阻肺诊疗规范
- 2025年宪法知识竞赛全套题库及答案(共150题)
- 黑龙江省普通高中2024年1月学业水平合格性考试 数学试题(真题)
- 《互联网产品开发》教学教案
- 2025年焊工(高级技师)职业技能鉴定理论考试题库(含答案)
- 肝内胆汁淤积症
- 车辆不过户免责协议书范本
- 上海2025年上海申康医院发展中心招聘笔试历年参考题库附带答案详解
- 校园信息化建设中的技术难题与解决方案
- 光伏安全施工方案范本
- 危化品石油石化企业三基三记培训
评论
0/150
提交评论